Hallo,

Ik heb even gegogeld, maar kon geen topic vinden over het tegengaan van MySQL Injection. Wel een tut. Mara nu is mijn vraag: "is het slim om gewoon addslashes() en stripslashes() te gebruiken? En hoe kan ik dat het snelste doen?"

Groeten,
Jonathan
mooie tut, alleen wordt er (vind ik) nog niet goed ingegaan op addslashes(). Want als die magic_quotes_gpc op true staat, waarom hoef ik dan niet adslashes te gebruiken?
En wat raden jullie aan?

groeten,
Jonathan
Naar mijn idee ben je met [php]mysql_real_escape_string[/php]() en controle of nummers ook echt nummers zijn ([php]is_numeric[/php]()) al een heel eind.
Met zoeken kom je ook vaak een heel eind. En ga me nu niet beweren dat je wel gezocht hebt, want als ik "Mysql Injection" bij Google erin duw, krijg ik een mooi lijstje met allemaal informatie over MySQL Injection..

Bruikbare informatie.. Bruikbare informatie waardoor dit topic echt heel erg overbodig is.

De eerste is zelfs een tutorial die op PHPhulp zelf staat...
Als je een zinnige mysql wrapper gebruikt/schrijft heb je de hele ad en stripslashes niet nodig. De DB class uit d toolkit van zend schijnt wel aardig te zijn. Anders heeft PEAR een aardige DB Abstraction class.
Gebruikt gewoon geen input van buitenaf... Zo heb ik je ook weer van een hoop zoekwerk afgeholpen ;)
Ik omsluit standaard ALLE waarden met single quotes, ook getal waarden.. dit wordt op bijna alle databases geaccepteerd.

Daardoor kan ik standaard alle user input escape'en door ' te vervangen door \', en de \ door \\. Nadeel van de functie addSlashes is dat ze meer tekens escaped (zoals de dubbele quote). Deze tekens worden door de SQL engine NIET ge-unescaped, waardoor een \n wordt gezien als \\\n.

Merk op dat als je waarden uit de POST haalt deze (afhankelijk van je PHP configuratie) al ge-escaped kunnen zijn.
Marien schreef op 13.09.2006 23:44
Gebruikt gewoon geen input van buitenaf... Zo heb ik je ook weer van een hoop zoekwerk afgeholpen ;)

wrom wtf heb je dan een database als niemand er iets in kan zetten???

Ik gebruik nu gewoon mysql_real_escape_string, is prima
Ik maak ook maar een geintje ;) Zorg ervoor dat je de input niet beperkt maar toelaat. Dus nix toestaan en dan wat je wil toestaan openzetten (met bijvoorbeeld een regexp)

Reageren