Heim >Datenbank >MySQL-Tutorial >Kann SQL-Injection auch mit „mysql_real_escape_string()' noch auftreten?
Selbst wenn Sie mySQL_REAL_ESCAPE_STRING () verwenden, kann die SQL -Injektion immer noch
auftreten Obwohl allgemein angenommen wird, dass MySQL_REAL_ESCAPE_STRING () die SQL -Injektion verhindern kann, kann in bestimmten Fällen eine SQL -Injektion immer noch auftreten. Das Folgende erklärt, wie dieser Angriff passiert ist:
Stellen Sie den Serverzeichen fest, so dass die ASCII -Rückneigung (0x5c) und den ungültigen Multi -Line -Zeichenzeichen (z. B. GBK). Dies kann über die Anweisung Set Namensanweisung implementiert werden.
Erstellen Sie eine effektive Last, beginnend mit 0xBF27. Im angegebenen Zeichensatz (z. B. GBK) bedeutet dies ein ungültiges Multi -Line -Zeichen, das in Latin1 in 0x27 (Spar) konvertiert wird.
MySQL_REAL_ESCAPE_STRING () basierend auf den Operationen mit verbundenem Zeichen (Latin1) basierend auf den Operationen mit verbundenem Zeichen (GBK). Es ist wirksam, auf 0x5c27 gültig zu sein. Da der Kunde immer noch glaubt, dass er Latin1 verwendet, ist der Backslash (0x5c) immer noch unrentabel.
mysqli ist nicht betroffen, da es eine echte Vorverarbeitungserklärung verwendet.
Entlastungsmaßnahmen:Simulation vor -prozessierende Aussagen in PDO deaktivieren.
Sie können diese potenzielle Lücke reduzieren.
Das obige ist der detaillierte Inhalt vonKann SQL-Injection auch mit „mysql_real_escape_string()' noch auftreten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!