Hallo,
Die Moeglichkeit der SQL-Injection ist mir bekannt, und ich
wende deshalb in PHP auch mysql_escape_string() an u.s.w.
Was ich mich aber schon laenger frage:
Inwiefern ist dieses Beispiel heute noch praxisrelevant?
AFAIK wuerde bei einem solchen String:
"SELECT * FROM blahr WHERE y = "x"; delete * from geheim where "a" = "a";
der von PHP an MySQL uebergeben wird, doch (wenn ueberhaupt)
nur das erste Statement, also der SELECT-Teil, von MySQL
ausgefuehrt.
(Konkret: PHP 4.3.x, MySQL 3.23.x)
Oder habe ich da etwas falsch im Kopf?
So richtig gefaehrlich wird es IMHO doch erst,
wenn man Angaben von der Benutzerseite
direkt in DELETE-Statements einbaut.
Benutzer-Eingabe: x, vorgesehen:
DELETE FROM blahr WHERE y="x"
boese Eingabe/SQL-Injection ohne Pruefung fuehrt zu:
DELETE FROM blahr WHERE y="x" OR "1"="1"
Dann ist die ganze Tabelle geloescht...
mfg
Thomas