wahsaga: MySQL-Injection in PHP

Beitrag lesen

hi,

Also eine MySQL-Injection sind 2 Anfragen an eine Datenbank.

nö, müssen keine zwei sein.

auch wenn du beispielsweise nur prüfst, ob die logindaten, username und passwort, in der DB vorhanden sind, kann man da ggf. eine injection reinschmuggeln.

nehmen wir mal an, deine WHERE-klausel lautete

WHERE username = '$username' AND passwort = '$passwort'

wobei $username und $passwort vom formular kommen.

wenn ich dir jetzt als wert für $passwort "blah' OR 1#" übermittle, ergibt das in deine query eingesetzt

WHERE username = '$username' AND passwort = 'blah' OR 1#'

der letzte teil ist damit immer wahr (# als kommentarzeichen beendet die queryzeile, das abschließende ' stört also nicht mehr), und ich muss nur noch einen gültigen usernamen wissen, um mich bei dir als eben dieser user einloggen zu können.

das wäre nicht passiert, wenn du die sonderzeichen wie ' in den von außen kommenden daten korrekt maskiert hättest - dazu gibt es in PHP beispielsweise die funktionen mysql_escape_string bzw. mysql_real_escape_string.

gruß,
wahsaga

--
"Look, that's why there's rules, understand? So that you _think_ before you break 'em."