Heim >Datenbank >MySQL-Tutorial >Schützt „addslashes()' wirklich vor SQL-Injection und warum sollten Sie stattdessen „mysql_real_escape_string()' verwenden?
addslashes()
vs. mysql_real_escape_string()
bei der Verhinderung von SQL-Injection
Obwohl addslashes()
oft als sicherere Alternative zu mysql_real_escape_string()
angepriesen wird, bleibt addslashes()
die empfohlene Methode zur Vermeidung von SQL-Injection-Schwachstellen in PHP-Anwendungen. Das Verständnis der Einschränkungen von
addslashes()
Bedenken Sie Folgendes: Eine SQL-Abfrage, die sich zur Bereinigung von Benutzereingaben auf addslashes()
verlässt, stößt auf eine Zeichenfolge, die ein einfaches Anführungszeichen (') enthält.
addslashes()
Ein Angreifer kann dies ausnutzen, indem er einen Bindestrich (-) oder ein ähnliches Zeichen anhängt, das eine Multibyte-Sequenz in bestimmten Unicode-Kodierungen (wie ISO-8859-1, aber nicht UTF-8) beendet. Dadurch wird
Die Sicherheitslücke ist kodierungsspezifisch. UTF-8, eine weit verbreitete Unicode-Kodierung, ist im Allgemeinen vor diesem speziellen Angriff sicher, da es nicht dasselbe Multibyte-Abschlusszeichen verwendet.
mysql_real_escape_string()
Für einen optimalen SQL-Injection-Schutz geben Sie immer addslashes()
Vorrang vor addslashes()
. Ergänzen Sie dies durch eine Eingabevalidierung auf Anwendungsebene und die Verwendung vorbereiteter Anweisungen für Datenbankinteraktionen. Durch das Erkennen der Schwächen von
Das obige ist der detaillierte Inhalt vonSchützt „addslashes()' wirklich vor SQL-Injection und warum sollten Sie stattdessen „mysql_real_escape_string()' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!