phpbar.de logo

Mailinglisten-Archive

[php] SQL Inject

[php] SQL Inject

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Jul 18 11:53:51 CEST 2006


Hi Mike,

Am Dienstag, 18. Juli 2006 11:43 schrieb Mike Hubner:
> > hast Du Dir mal auf beiden Servern den Inhalt von $sql ausgeben
> > lassen? Gibt es da einen Unterschied zu sehen? Eventuell könnte es
> > an magic_quotes liegen...
> >
> > Viele Grüße
> > Lutz
>
> Jep, wenn ich die magic_quotes local einschalte gehts auch nimmer.
> Das is schon mal gut... heißt dann eigentlich damit wäre in
> diesem Fall eine SQL.Injection ausgeschlossen?

ich würde da eher auf diese Funktion setzen:
http://de2.php.net/manual/en/function.mysql-real-escape-string.php

Optimal wäre die Verwendung von Prepared Statements. Damit wärest Du 
völlig auf der sicheren Seite. Dafür brauchst Du aber die passende 
MySQL-Version und mysqli dazu.

Auf magic_quotes würde ich nicht bauen. Das gehört eigentlich 
abgeschaltet, weil es jede Menge Probleme bereitet. Ohnehin würde ich 
mich nicht auf Servereinstellungen alleine verlassen, die Du vielleicht 
auch gar nicht beeinflussen kannst.

Und ganz wichtig: Jeder von außen an ein Skript übergebene Parameter 
gehört validiert. Ein gängiger Fehler ist, vermeintliche Zahlenwerte 
nicht zu überprüfen, wobei gerade hier die SQL-Einschleusung im 
Zusammenspiel mit der PHP-Typenkonvertierung möglich ist. Also immer 
den Typ erzwingen und den Inhalt (gültige Werte, Wertebereich...) 
prüfen.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive