Bekijk Volledige Versie : Addslashes vs. Magic Qoutes
Maarten Wierda
26/09/03, 10:15
Beste nieuwsgroep,
Even een vraagje uit nieuwsgierigheid. Ik vraag mij af wat de beste
manier is om met quotes in strings om te gaan in een bepaald systeem.
Het betreft bijvoorbeeld een systeem waarbij veel data wordt toegevoegd
aan een database en ook veel data wordt geselecteerd uit een database.
Wederom betreft het een MySQL-database met een PHP-backend.
Natuurlijk heb ik ook gelezen over de poging om addslashes() en
stripslashes() automatisch te laten verlopen, genaamd Magic Quotes. Het
vervelende hieraan is alleen dat de data die je vervolgens uitleest, wel
weer slashes bevat. En dus mag je weer zelf stripslashes() gaan
gebruiken. Hieruit concludeer ik dus dat ik beter Magic Quotes kan
uitzetten en addslashes() gebruik indien dat nodig is.
Is dit de juiste manier? Klopt mijn verhaal? Hebben mensen op- en
aanmerkingen van betreft dit verhaal?
Alvast bedankt.
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."
"Maarten Wierda" <moart3n@norecessDOT.com> wrote in message
news:3F73F2FF.58CC5391@norecessDOT.com...
> Beste nieuwsgroep,
>
> Even een vraagje uit nieuwsgierigheid. Ik vraag mij af wat de beste
> manier is om met quotes in strings om te gaan in een bepaald systeem.
> Het betreft bijvoorbeeld een systeem waarbij veel data wordt toegevoegd
> aan een database en ook veel data wordt geselecteerd uit een database.
> Wederom betreft het een MySQL-database met een PHP-backend.
>
> Natuurlijk heb ik ook gelezen over de poging om addslashes() en
> stripslashes() automatisch te laten verlopen, genaamd Magic Quotes. Het
> vervelende hieraan is alleen dat de data die je vervolgens uitleest, wel
> weer slashes bevat. En dus mag je weer zelf stripslashes() gaan
> gebruiken. Hieruit concludeer ik dus dat ik beter Magic Quotes kan
> uitzetten en addslashes() gebruik indien dat nodig is.
>
> Is dit de juiste manier? Klopt mijn verhaal? Hebben mensen op- en
> aanmerkingen van betreft dit verhaal?
>
> Alvast bedankt.
>
> --
> Cheers, Maarten Wierda
>
> "Music is first, lyrics are secondary."
Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug magic
quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
Het lijkt me dus beter om magic uit te zetten en ervoor te zorgen dat
ingevoerde data dmv add/stripslashes correct in de db wordt gezet.
Edw!n
Maarten Wierda
26/09/03, 12:15
edwin wrote:
> Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug magic
> quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
Wat is er dan onveilig aan?
> Het lijkt me dus beter om magic uit te zetten en ervoor te zorgen dat
> ingevoerde data dmv add/stripslashes correct in de db wordt gezet.
Ik denk inderdaad ook dat dat het beste is. Slashes toevoegen en
strippen indien nodig.
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."
Maarten Wierda wrote:
> edwin wrote:
>
>> Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug magic
>> quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
>
> Wat is er dan onveilig aan?
Dat er veel mensen zijn die denken dat dat een beveiliging is, het is
meer een soort laatste noodgreep. Controleer altijd zelf je invoer (mag
er alleen een getal komen? controleer of het een getal is, etc). Doordat
mensen denken dat magic_quotes beschermen tegen sql injection kan je nu
op allerlei sites fijn op het id field injecten.
Mark
"Marcus" <mark@ijbema.xs4all.nl> wrote in message
news:slrnbn845q.1u7.mark@debian.ijbema.xs4all.nl.. .
> Maarten Wierda wrote:
> > edwin wrote:
> >
> >> Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug
magic
> >> quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
> >
> > Wat is er dan onveilig aan?
>
> Dat er veel mensen zijn die denken dat dat een beveiliging is, het is
> meer een soort laatste noodgreep. Controleer altijd zelf je invoer (mag
> er alleen een getal komen? controleer of het een getal is, etc). Doordat
> mensen denken dat magic_quotes beschermen tegen sql injection kan je nu
> op allerlei sites fijn op het id field injecten.
>
> Mark
Dat is ook eigenlijk wat ik bedoelde: Wanneer magic aan staat zul je niet
snel de ingevoerde data controleren. Wanneer je het uit zet moet je het
bijna wel doen.
Het is dus aan de php-bakker.
Edw!n
Maarten Wierda
26/09/03, 12:30
Marcus wrote:
> >> Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug magic
> >> quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
> >
> > Wat is er dan onveilig aan?
>
> Dat er veel mensen zijn die denken dat dat een beveiliging is, het is
> meer een soort laatste noodgreep. Controleer altijd zelf je invoer (mag
> er alleen een getal komen? controleer of het een getal is, etc). Doordat
> mensen denken dat magic_quotes beschermen tegen sql injection kan je nu
> op allerlei sites fijn op het id field injecten.
Dat het geen totale beveiliging biedt was me al duidelijk ja. En dat
input grondig gecontroleerd dient te worden voordat het wordt ingevierd
in een database is me ook bekend.
Het gaat mij dus puur om de beste oplossing betreft quotes. *Handmatig*
addslashes() en stripslashes() gebruiken lijkt me het beste.
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."
Daniel Tryba
26/09/03, 14:15
Maarten Wierda <moart3n@norecessdot.com> wrote:
> Het gaat mij dus puur om de beste oplossing betreft quotes. *Handmatig*
> addslashes() en stripslashes() gebruiken lijkt me het beste.
Maar hier houdt het niet bij op. Je moet ook nog op het goede moment
(bij het tonen aan de gebruiker) denken aan het escapen, soms is dat
htmlencoden, soms urlescapen en een andere keer addslashes.
BTW denk er wel aan dat sommige databases verschillende escaping
methodes gebruiken (bv: '' vs. \')
--
Daniel Tryba
Michiel de Roo
26/09/03, 14:15
Maarten Wierda wrote:
> edwin wrote:
>
>
>>Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug magic
>>quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
>
>
> Wat is er dan onveilig aan?
>
>
>>Het lijkt me dus beter om magic uit te zetten en ervoor te zorgen dat
>>ingevoerde data dmv add/stripslashes correct in de db wordt gezet.
>
>
> Ik denk inderdaad ook dat dat het beste is. Slashes toevoegen en
> strippen indien nodig.
>
Dan wel indien nodig. En denk er ook aan dat je je script misschien nog
wel eens naar een andere server wilt verhuizen waar het anders ingesteld
staat. Het is dus handig om zoiets te doen: (van php.net)
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST['lastname']);
} else {
$lastname = $_POST['lastname'];
}
Michiel.
Maarten Wierda
26/09/03, 14:45
Daniel Tryba wrote:
> > Het gaat mij dus puur om de beste oplossing betreft quotes. *Handmatig*
> > addslashes() en stripslashes() gebruiken lijkt me het beste.
>
> Maar hier houdt het niet bij op. Je moet ook nog op het goede moment
> (bij het tonen aan de gebruiker) denken aan het escapen, soms is dat
> htmlencoden, soms urlescapen en een andere keer addslashes.
>
> BTW denk er wel aan dat sommige databases verschillende escaping
> methodes gebruiken (bv: '' vs. \')
Duidelijk. Bedankt voor het meedenken.
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."
Maarten Wierda
26/09/03, 14:45
Michiel de Roo wrote:
> > Ik denk inderdaad ook dat dat het beste is. Slashes toevoegen en
> > strippen indien nodig.
> >
>
> Dan wel indien nodig. En denk er ook aan dat je je script misschien nog
> wel eens naar een andere server wilt verhuizen waar het anders ingesteld
> staat. Het is dus handig om zoiets te doen: (van php.net)
>
> if (!get_magic_quotes_gpc()) {
> $lastname = addslashes($_POST['lastname']);
> } else {
> $lastname = $_POST['lastname'];
> }
Duidelijk. Bedankt voor het meedenken.
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."
Michiel de Roo wrote:
> Maarten Wierda wrote:
>> edwin wrote:
>>
>>
>>>Wat ik ervan begrepen heb (mijn hosting provider heeft een jaar terug magic
>>>quotes uitgezet) is dat wanneer deze aan staat, dit onveiliger is.
>>
>>
>> Wat is er dan onveilig aan?
>>
>>
>>>Het lijkt me dus beter om magic uit te zetten en ervoor te zorgen dat
>>>ingevoerde data dmv add/stripslashes correct in de db wordt gezet.
>>
>>
>> Ik denk inderdaad ook dat dat het beste is. Slashes toevoegen en
>> strippen indien nodig.
>>
>
> Dan wel indien nodig. En denk er ook aan dat je je script misschien nog
> wel eens naar een andere server wilt verhuizen waar het anders ingesteld
> staat. Het is dus handig om zoiets te doen: (van php.net)
>
> if (!get_magic_quotes_gpc()) {
> $lastname = addslashes($_POST['lastname']);
> } else {
> $lastname = $_POST['lastname'];
> }
hmmm, en als magicquotes aanstaan en in lastname dit staat:
hoi\
gaat dat dan goed?
Mark
Ronald Paul
27/09/03, 10:00
Maarten Wierda <moart3n@norecessDOT.com> schreef:
>Het gaat mij dus puur om de beste oplossing betreft quotes. *Handmatig*
>addslashes() en stripslashes() gebruiken lijkt me het beste.
Bij een goed gebruik heb je stripslashes() nooit nodig.
--
Groet, Ronald
Maarten Wierda
27/09/03, 14:00
Ronald Paul wrote:
>>Het gaat mij dus puur om de beste oplossing betreft quotes. *Handmatig*
>>addslashes() en stripslashes() gebruiken lijkt me het beste.
>
>
> Bij een goed gebruik heb je stripslashes() nooit nodig.
Hmm, ik begrijp wat je bedoelt. Zie het volgende scenario.
INSERT INTO tabel (foo) VALUES ('Hans' auto');
SQL ziet dit als:
INSERT INTO tabel (foo) VALUES
('Hans'
auto'
');
Volgens mij moet je dus het volgende inserten:
INSERT INTO tabel (foo) VALUES ('Hans\' auto');
Dit bereik je alleen door addslashes() te gebruiken, en nu staat er in
de database netjes: Hans' auto.
Dit is dus allemaal duidelijk, maar is het niet zo dat slashes zelf soms
ook worden ge-escaped?
--
Cheers, Maarten Wierda
Q: What do you call someone who hangs around with musicians?
A: A drummer.
Ronald Paul
27/09/03, 14:30
Maarten Wierda <moart3nAT@chello.nl> schreef:
>> Bij een goed gebruik heb je stripslashes() nooit nodig.
>
>Hmm, ik begrijp wat je bedoelt. Zie het volgende scenario.
>
>INSERT INTO tabel (foo) VALUES ('Hans' auto');
[..]
>Volgens mij moet je dus het volgende inserten:
>
>INSERT INTO tabel (foo) VALUES ('Hans\' auto');
>
>Dit bereik je alleen door addslashes() te gebruiken, en nu staat er in
>de database netjes: Hans' auto.
Klopt.
>Dit is dus allemaal duidelijk, maar is het niet zo dat slashes zelf soms
>ook worden ge-escaped?
Jawel, want anders gaat het ook nog fout met backslashes. Stel dat ik
test\
in de database wil hebben, dan moet ik dus het volgende aan de
database-server voeren:
SET veld="test\\", veld=...
omdat
SET veld="test\", veld=...
de mist in zal gaan. addslashes() escaped dus ook mooi backslashes met
een baskslashes.
--
Groet, Ronald
Maarten Wierda
27/09/03, 14:45
Ronald Paul wrote:
>>Dit is dus allemaal duidelijk, maar is het niet zo dat slashes zelf soms
>>ook worden ge-escaped?
>
>
> Jawel, want anders gaat het ook nog fout met backslashes. Stel dat ik
>
> test\
>
> in de database wil hebben, dan moet ik dus het volgende aan de
> database-server voeren:
>
> SET veld="test\\", veld=...
>
> omdat
>
> SET veld="test\", veld=...
>
> de mist in zal gaan. addslashes() escaped dus ook mooi backslashes met
> een baskslashes.
Mag ik hieruit concluderen dat het ongebruikelijk is stripslashes() te
gebruiken tijdens het selecteren en printen van gegevens uit een database?
--
Cheers, Maarten Wierda
Q: What do you call someone who hangs around with musicians?
A: A drummer.
Maarten Wierda wrote:
> Ronald Paul wrote:
>
>>>Dit is dus allemaal duidelijk, maar is het niet zo dat slashes zelf soms
>>>ook worden ge-escaped?
>>
>>
>> Jawel, want anders gaat het ook nog fout met backslashes. Stel dat ik
>>
>> test\
>>
>> in de database wil hebben, dan moet ik dus het volgende aan de
>> database-server voeren:
>>
>> SET veld="test\\", veld=...
>>
>> omdat
>>
>> SET veld="test\", veld=...
>>
>> de mist in zal gaan. addslashes() escaped dus ook mooi backslashes met
>> een baskslashes.
>
> Mag ik hieruit concluderen dat het ongebruikelijk is stripslashes() te
> gebruiken tijdens het selecteren en printen van gegevens uit een database?
De slashes worden niet daadwerkelijk in de database opgeslagen, behalve
de 'echte' slashes, dus ja.
Mark
Ronald Paul
27/09/03, 16:00
Maarten Wierda <moart3nAT@chello.nl> schreef:
>Mag ik hieruit concluderen dat het ongebruikelijk is stripslashes() te
>gebruiken tijdens het selecteren en printen van gegevens uit een database?
Sterker nog: ik kan mij geen enkele situatie bedenken waarin dat
wenselijk zou zijn.
--
Groet, Ronald
Maarten Wierda
27/09/03, 16:30
Ronald Paul wrote:
>>Mag ik hieruit concluderen dat het ongebruikelijk is stripslashes() te
>>gebruiken tijdens het selecteren en printen van gegevens uit een database?
>
> Sterker nog: ik kan mij geen enkele situatie bedenken waarin dat
> wenselijk zou zijn.
Daar ben ik blij om :-) Het is mij allemaal duidelijk nu.
Maar dan heb ik toch nog een vraagje. Zouden jullie het volgende artikel
<http://80.84.227.171/artikelen.php?aid=52&page=1> even vluchtig kunnen
doorlezen en mij willen vertellen dat de methode die de schrijver
hanteert, niet de juiste is? ;-)
Bedankt alvast.
--
Cheers, Maarten Wierda
Q: What do you call someone who hangs around with musicians?
A: A drummer.
Ronald Paul
27/09/03, 17:00
Maarten Wierda <moart3nAT@chello.nl> schreef:
>Maar dan heb ik toch nog een vraagje. Zouden jullie het volgende artikel
><http://80.84.227.171/artikelen.php?aid=52&page=1> even vluchtig kunnen
>doorlezen en mij willen vertellen dat de methode die de schrijver
>hanteert, niet de juiste is? ;-)
Natuurlijk: de methode die Daniël hanteerd is niet de juiste :-)
Zie ook dit volgende bericht van mij:
http://groups.google.com/groups?selm=2g69buk60o7okm2gne0b81r8j9km1b817j%404 ax.com
--
Groet, Ronald
Maarten Wierda
27/09/03, 17:15
Ronald Paul wrote:
>>Maar dan heb ik toch nog een vraagje. Zouden jullie het volgende artikel
>><http://80.84.227.171/artikelen.php?aid=52&page=1> even vluchtig kunnen
>>doorlezen en mij willen vertellen dat de methode die de schrijver
>>hanteert, niet de juiste is? ;-)
>
> Natuurlijk: de methode die Daniël hanteerd is niet de juiste :-)
Whoehoe! :-D
> Zie ook dit volgende bericht van mij:
> http://groups.google.com/groups?selm=2g69buk60o7okm2gne0b81r8j9km1b817j%404 ax.com
Helemaal duidelijk. Bedankt Ronald!
--
Cheers, Maarten Wierda
Q: What do you call someone who hangs around with musicians?
A: A drummer.
Daniel Tryba
27/09/03, 18:00
Ronald Paul <usenet@rcpaul.nl> wrote:
>>Maar dan heb ik toch nog een vraagje. Zouden jullie het volgende artikel
>><http://80.84.227.171/artikelen.php?aid=52&page=1> even vluchtig kunnen
>>doorlezen en mij willen vertellen dat de methode die de schrijver
>>hanteert, niet de juiste is? ;-)
>
> Natuurlijk: de methode die Dani?l hanteerd is niet de juiste :-)
De methode mag dan niet juist zijn, de code klopt wel. Het levert het
gewenste resultaat op de next.php pagina. Jammer genoeg verteld hij niet
wat hij op een andere pagina doet met de data die uit de database wordt
getrokken....
--
Daniel Tryba
[XL] Fluid Void
30/09/03, 09:00
"Michiel de Roo" <nospam@mREMdeOVErooTHIS.nl> wrote in message
news:3f742d38$0$58697$e4fe514c@news.xs4all.nl...
> if (!get_magic_quotes_gpc()) {
> $lastname = addslashes($_POST['lastname']);
> } else {
> $lastname = $_POST['lastname'];
> }
Nog handiger, een functie:
function setSlashes($val)
{
if (!get_magic_quotes_gpc())
{
$val = addslashes($val);
}
return $val;
}
Groet,
Vincent Ludden
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
vincent at ludden.nl - http://vincent.ludden.nl
ICQ: 427552 MSN: vinlud2@hotmail.com
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --