SQL Injection, Sonderzeichen und Character Escape

Guten Tach,

ich habe mich soeben auf bplaced registriert und dort sogleich meine kleine Webseite hochgeladen. Als ich daraufhin einige Tests gemacht habe, stellte ich etwas sehr interessantes fest:

obwohl ich in meinem PHP code keinerlei Character Escaping benutze um mich gegen SQL Injection zu schützen, funktionieren die mysql_querys auf bplaced allerbest!

Und das natürlich obwohl ich Zeichen wie ', ", \ und ` verwendet habe.

meine Frage nun: Wie kann das sein? Gibt es eine PHP/MySQL Einstellung, die sowas von alleine regelt?

Vielen Dank im Voraus!

Auf bplaced ist zur Zeit noch magic_quotes_gpc gesetzt. Daher werden alle Strings, die an PHP gesendet werden gesichert. Das ist aber veraltet und wird bald aus PHP verschwinden, daher solltest du das deaktivieren und das escapen selbst machen.
PHPs Standardescaping hat auch Lücken, z.B. wenn der String per UTF-8 an den Server gesendet wird, deine Datenbankverbindung aber mit iso-8859-1 arbeitet.

Ok, danke für die Antwort.

Ich bin auch gerade schon dabei meinen Code zu überarbeiten und das mehr oder weniger manuell in die Hand zu nehmen.
Momentan filtere ich alle User-Eingabe durch mysql_real_escape_string(), reicht das aus?

[quote=“layzee”]Ok, danke für die Antwort.

Ich bin auch gerade schon dabei meinen Code zu überarbeiten und das mehr oder weniger manuell in die Hand zu nehmen.
Momentan filtere ich alle User-Eingabe durch mysql_real_escape_string(), reicht das aus?[/quote]
Das reicht aus. Zahlen würde ich aber einfach durch intval schicken :wink:

hallo,

ich hab hier mal den tipp “pdo” bekommen. du solltest dir das mal ansehen. durch die prepared statements wird eine sql-injection sicher abgefangen, du bist unabhängig von der datenbank ,und noch ein paar vorteile mehr.

ist zwar eine kleine umgewöhnung, aber leicht zu schaffen…

php.net/manual/de/book.pdo.php

gruß
emil