Heim >Datenbank >MySQL-Tutorial >Kann SQL-Injection auch mit „mysql_real_escape_string()' noch auftreten?

Kann SQL-Injection auch mit „mysql_real_escape_string()' noch auftreten?

DDD
DDDOriginal
2025-01-25 21:18:11580Durchsuche

Can SQL Injection Still Occur Even with `mysql_real_escape_string()`?

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:

    Zeichensatzauswahl:
  1. 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.

    Effektive Lastkonstruktion:
  2. 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 () operation:
  3. 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.

    • Abfrageausführung:
  4. Die Rendering -Abfrage enthält einen unvorbereiteten Skimmer im Inhalt der Gerechtigkeit, was zu einem erfolgreichen Injektionsangriff führt.

      PDO und MySQLI Schwachstellen:
  5. PDOs standardmäßige Verwendung analoger Vorverarbeitungsanweisungen, die leicht angegriffen werden können.

mysqli ist nicht betroffen, da es eine echte Vorverarbeitungserklärung verwendet.

Entlastungsmaßnahmen:
  • Verwenden Sie nicht -Angriffs -Zeichensätze, um die Codierung zu verbinden (z. B. UTF8).
Verwenden Sie MySQL_Set_Charset () / PDO DSN -Zeichensatzparameter korrekt den Verbindungszeichen.

Simulation vor -prozessierende Aussagen in PDO deaktivieren.

    Die folgenden Bedingungen werden verifiziert:
  • Moderne MySQL -Version mit dem richtigen Charakter -Set -Management
  • oder nicht -vulnerbare Zeichensätze
  • verwenden

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn