SQL Injection - Frage

kevkev

Erfahrenes Mitglied
Hallo,

Ich hab mich mal ein wenig mit dem Thema SQL Injection befaßt, und das ganze bei meinen eigenen scripts probiert, aber ich selber als Coder bekomme da nix raus.

Nehmen wir an, folgende Abfrage:
Code:
SELECT * FROM Userdaten WHERE user = '".$_POST["user"]."' AND pass = '".$_POST["pass"]."'

So, da werden die Daten nun direkt per POST von nem Feld übertragen und in den query eingefügt.
Aber:
Daten die mittels POST übertragen werden, werden ja escaped, also aus einem ' wird ein \', aus einem " wird ein \".

Aber nun kann Ich ja keine externen Querys einfügen, da ja die Daten ja escaped werden.

Aber wieso weisen die ganzen SQL Injects Info-Seiten nicht darauf hin?
Wenn Ich meinen String den Ich mittels POST übergebe nicht extra mit str_replace wieder "unescaped" mach, brauche Ich mir doch praktisch keine Sorge machen, oder?

Ich hoffe Ihr klärt mich auf ^^-

gruß kevin
 
Daten die mittels POST übertragen werden, werden ja escaped, also aus einem ' wird ein \', aus einem " wird ein \".
Dies ist nicht immer der Fall, sondern von der magic_quotes_runtime-Konfigurationseinstellung anhängig. Ist diese auf true eingestellt, werden allen einfachen und doppelten Anführungszeichen das Umgekehrter-Schrägstrich-Zeichen vorangesetzt. Siehe dazu auch das Kapitel über Magic Quotes des PHP-Handbuchs.

Übrigens gibt es noch mehr Zeichen als die Anführungszeichen, die in einer Abfrage gefährlich werden können. Weitere Informationen zu diesem Thema findest du nebend er Suchfunktion auch in den Themen „Sicherheit?“ sowie „ Thema Sicherheit: mysql_real_escape_string() & magic_quotes_gpc“.
 
Zurück