Matze: SQL-Injection

Beitrag lesen

Hallo,

ACHTUNG! Hier muss man _höllisch_ aufpassen!

$query = "SELECT ... WHERE id = ".mysql_real_escape_string ($_GET['id']); -> SICHERHEITSLÜCKE

Warum? Weil die Funktion mysql_real_escape_STRING heißt, d.h. für STRINGS gedacht ist. Wenn Du unter der Annahme, es handelt sich um eine Zahl, die Zahl einfach in den Query schreibst, dann nützt Dir mysql_real_escape_string nichts, weil in einem String wie »1 UNION ALL ...« nichts drin ist, was escapet werden müsste (keine ' etc.)!

$query = "SELECT ... WHERE id = '".mysql_real_escape_string ($_GET['id'])."'"; -> hat das Problem nicht.

hm.. aber id steht doch schon in '' also $_GET['id'].
Ist es in dem Fall nicht irrelevant weil id schon als String behandelt wird?
Ich schreib zwar immer im Stil '".mysql..(..)."' aber frag mich halt grad nur.

Grüße, Matze