Ist urlencode() gut genug, um zu beenden Sie alle SQL-injection-Angriffe im Jahr 2011
Bin ich vorbei an einigen einfachen Benutzer Daten in eine mysql-Datenbank.
PHP ist urlencode() Gibt einen string zurück, in dem alle nicht-alphanumerischen Zeichen außer -_. ersetzt wurden mit einem Prozentzeichen (%) gefolgt von zwei hex-Ziffern.
Ich bin nicht besorgt über die Bereiche drehen ins plus, oder andere Probleme mit der Formatierung.
Weder mache ich mir sorgen um XSS-und andere HTML-hacks.
Ich glaube, ich sollte sicher sein von ' und ) style-Attacken.
FRAGE: gibt es andere Arten von sql-Angriffe verwendet werden könnten, mit - oder _ oder . ?
BEISPIEL:
mysql_query("UPDATE cars SET color = '".urlencode($c)."' WHERE garage = 29");
Danke im Voraus
- Was ist falsch mit der Verwendung
mysql_real_escape_string
? - im Jahr 2011, sollten Sie Graben mysql_* - Funktion, start mit mysqli_* - Funktion, oder PDO
- mysqli ist ein schmerzhafter Alptraum im Vergleich zu PDO
- Jahr 2013 Check-in. noch nicht gut genug.
Du musst angemeldet sein, um einen Kommentar abzugeben.
urlencode()
hat nichts zu tun mit SQL, damit es nicht so viel, um zu verhindern, dass SQL-injection als Kerosin tut, um Ihre Burger lecker. Außerdem alles, was in Ihre Datenbank, werden am Ende der URL kodiert ist, die Sie dann zu Dekodieren, wenn Sie wollen, etwas nützliches zu tun, mit Ihnen nach dem abrufen der Datenbank.Flucht Ihrer Anfragen, auf der anderen Seite, hilft Ihre Anwendung zum Schutz gegen SQL-injection, und nichts mehr. Es nicht die Daten ändern, die Sie in Ihren Abfragen; es nur schützt Ihre Anfragen manipuliert. Das ist die Idee der SQL-Injektion, und es ist auch, warum die URL-Codierung werden Ihre Daten nicht alles tun, um gegen Sie zu schützen. Zugegeben, es hat schalten Sie Ihre Apostrophe
'
in%27
, wodurch Sie harmlos, aber wie bereits in dem vorstehenden Absatz nicht nach, haben Sie, um URL-decodieren Sie wieder in Hochkommas, um Sie zu benutzen.Verwenden Sie das richtige Werkzeug für den richtigen Zweck. Vor allem im Jahr 2011, Sie verwendet werden sollten prepared statements anstatt manuell die Flucht Ihrer query-Variablen und strings verketten zu bilden, Abfragen.
mysql_real_escape_string()
- Funktion oder verwenden Sie vorbereitete Anweisungen, um wirklich Schutz vor SQL-injection-Angriffe.Nicht. Es ist tatsächlich gefährlich, zu verwenden der url-Kodierung für SQL-injection-Schutz.
Ich glaube nicht, dass
urlencode
allein gut genug sein wird, zu stoppen von sql-Injektion. Sie haben atleastmysql_real_escape_string
oderprepared statements from PDO.
.Verwenden Sie PDO und paramaterized Abfragen.