Vor einiger Zeit habe ich dasselbe in einem Artikel entdeckt.
Also hab ich das mal ausprobiert.
Eine Eingabe vom Benutzer, die direkt im Query landet:
$Query=mysql_query("SELECT * FROM auth WHERE user='$user' AND pw='$pw'");
Eingabe:
$user: WLaner
$pw: ' OR ''='
So, wurde im Artikel "behauptet", kann man jetzt auf jeden Account zugreifen, ohne ein korrektes Passwort einzugeben. (Ist mir auch klar, wenn ich den finalen Query anschaun, obwohl ich des mit ''='' nicht kenn.)
Bei meinem Test wurde der Login-Versuch allerdings abgewiesen.
Also hab ich mir die POST-Vars mal mit PHP ausgeben lassen und siehe da:
echo $user; // WLaner
echo $pw; // \' OR \'\'=\'
Die Variablen wurden also schon vorher escaped, oder wie ist das anzunehmen? Mit mysql_real_escape_string wurde das ganze doppelt escaped...
Gibts vllt. in PHP schon eine Art Sicherheitseinstellung oder hab ich da einfach was falsch gemacht :-) ? Vllt. weist du da ja was, @Borl
WL