Trotz seiner weit verbreiteten Verwendung ist mysql_real_escape_string() nicht immun gegen SQL-Injection-Angriffe.
Voraussetzung: Die Datenbank Die Verbindung muss einen anfälligen Zeichensatz wie big5, cp932, gb2312, gbk oder sjis verwenden.
Schritte:
Ergebnis: Aufgrund der Nichtübereinstimmung der Client-Server-Codierung enthält die Abfrage a nicht entkommenes einfaches Anführungszeichen, was zu einer erfolgreichen SQL-Injection führte.
Bug in mysql_real_escape_string(): In früheren MySQL-Versionen wurden ungültige Multibyte-Zeichen als einzelne Bytes behandelt zu Escape-Zwecken, auch wenn der Client die Verbindungskodierung kannte.
PDO Sicherheitslücke: Emulierte vorbereitete Anweisungen in PDO werden mit mysql_real_escape_string() erstellt und sind daher anfällig für diesen Angriff.
Sichere Praktiken:
Das obige ist der detaillierte Inhalt vonKann SQL-Injection „mysql_real_escape_string()' durch Zeichensatzmanipulation umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!