Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

PHP: SQL Injection durch Scan der $HTTP_POST_VARS verhindern

chas0r.de / 3 Antworten / Flachansicht Nickles

Hallo
gibt es eine Funktion, mit der ich die Arrays $HTTP_POST_VARS und $HTTP_GET_VARS auf etwaige SQL Injection Versuche überprüfen kann?

Dies müsste doch theoretisch der beste Weg sein, SQL Injections abzufangen.

Ideal wäre, wenn die Funktion die Arrays sichert und dann zurückgibt.
Also die SQL I. rausfiltert.

mfg chaser

bei Antwort benachrichtigen
wlaner Borlander „ Naja, nach dem Escapen für SQL-Abfragen sind die Variablen aber nicht mehr...“
Optionen

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

bei Antwort benachrichtigen