Was passiert wenn der Nutzer beim Loginnamen folgendes eingibt:
Klaus';'DROP DATABASE
Dann werden zwei SQL-Statements ausgeführ
Das würde so nicht funktionieren da schon php 4 und neuere Versionen nur mehr einen Sql befehl abschicken.
Aber du hast recht die gefahr von Sql injection ist hier sehr hoch.
Was gehen würde bei diesem oben gepostet script were wenn man
bei username irgendwas eingibt
und bei Password: 'OR 5>2' /*
dann würde die Sql Abfrage so lauten:
SELECT id,password FROM user WHERE login='' Or 2<5 /* '
Und wir währen damit dann schon eingelogt da das ergbniss immer wahr ist.
Die php abrage würde dann lauten:
if ($userData["password"]==$password) // mit anderen worten wenn ""=="" dann einlogen
Also wen nix gleich nix ist dann sind wir eingelogt.
Und schon hat der Angreifer zugang zu deiner Seite
Noch schlimer ist es mit einen anderen Sql befehl
sehen wir uns mal die Zeile an :
echo "Es ist der Benutzer mit der ID $userId angemeldet.";
Mit dem Ausgabe Ergebniss kann man sogar noch ein Password ausgeben das in der Db steht. Wenn man bei der Password eingabe einen anderen Sql befehl eingibt den ich jetzt hier nicht erwähnen möchte.
Mfg Splasch
Zuletzt bearbeitet: