Verwenden Sie ungültige Multi -Abschnitts -Zeichen zur Umgehung
Funktion für die SQL -Injektion mysql_real_escape_string()
Auch wenn die -Funktion verwendet wird, kann eine SQL -Injektion auftreten. Die folgenden Schritte zeigen, wie diese Funktion umgangen wird:
mysql_real_escape_string()
Die Angriffslast mit einem ungültigen Multi -BYTE -Zeichen:
<code class="language-sql">mysql_query('SET NAMES gbk');</code>
Verwenden Sie eine unvorbereitete Angriffslast, um Abfrage durchzuführen:
<code class="language-php">$var = mysql_real_escape_string("\xbf\x27 OR 1=1 /*");</code>
Der Rotationsbetrieb der Funktion hängt von dem in aktuell verwendeten Zeichensatz ab. In diesem Beispiel verwendet die Verbindung jedoch das Zeichensatz (z. B. GBK), das leicht angegriffen werden kann und die Erstellung ungültiger Multi -Linien -Zeichen ermöglicht. Daher wurde die Injektionsbelastung nicht korrekt übertragen, was zu erfolgreichen Injektionsangriffen führte.
Sicherheitsmaßnahmen<code class="language-sql">mysql_query("SELECT * FROM test WHERE name = '$var' LIMIT 1");</code>
mysql_real_escape_string()
Wählen Sie Zeichensätze aus, die nicht leicht angegriffen werden können, wie z. B. UTF8 oder Latin1. Aktivieren Sie no_backslash_escapes SQL -Modus:
Dies verhindert ungültige Zeichen im Drehprozess.
Verwenden Sie PDO- und Deaktivieren von Simulation vorabverarbeitung:
Das obige ist der detaillierte Inhalt vonWie kann SQL Injection Bypass `mysql_real_escape_string ()`?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!