Heim > Backend-Entwicklung > PHP-Tutorial > Sind mysql_real_escape_string() und addslashes() gleichwertig bei der Verhinderung von SQL-Injection?

Sind mysql_real_escape_string() und addslashes() gleichwertig bei der Verhinderung von SQL-Injection?

Susan Sarandon
Freigeben: 2024-10-21 13:30:03
Original
273 Leute haben es durchsucht

Are mysql_real_escape_string() and addslashes() Equivalent in Preventing SQL Injection?

Den Unterschied verstehen: mysql_real_escape_string() vs. addslashes()

Während sowohl mysql_real_escape_string() als auch addslashes() zum Escape-Special verwendet werden Zeichen in Zeichenfolgen, um SQL-Injection-Angriffe zu verhindern, gibt es wesentliche Unterschiede zwischen den beiden Funktionen.

mysql_real_escape_string()

Diese Funktion wurde speziell für MySQL-Datenbanken entwickelt und fügt Schrägstriche hinzu die folgenden Zeichen:

  • x00
  • n
  • r
  • '
  • "
  • x1a

addslashes()

Andererseits fügt addslashes() nur drei Zeichen Schrägstriche hinzu:

  • '
  • NUL

Sicherheitsimplikationen

Webanwendungen, die ausschließlich auf addslashes() angewiesen sind Die Eingabevalidierung ist möglicherweise immer noch anfällig für SQL-Injection-Angriffe. Dies liegt daran, dass addslashes() nicht vor allen Zeichen schützt, die bei einem Injection-Angriff verwendet werden können, nämlich:

  • Zeilenumbrüche (n und r): Diese Zeichen können verwendet werden, um neue Zeilen in die Abfrage einzufügen und möglicherweise Validierungsprüfungen zu umgehen.
  • Kommentare (--): Diese Zeichen können zum Auskommentieren verwendet werden den Rest der Abfrage, sodass ein Angreifer beliebige SQL-Befehle ausführen kann.
  • Zusätzliche Escape-Zeichen (x1a): mysql_real_escape_string() schützt vor zusätzlichen Escape-Zeichen, die addslashes() nicht bietet, wie z als x1a.

Empfehlung

Für optimale Sicherheit wird empfohlen, die Verwendung von mysql_real_escape_string() und addslashes() zu vermeiden und stattdessen parametrisierte oder vorbereitete Abfragen zu verwenden Aussagen. Mit diesen Methoden können Sie Benutzereingaben an die Abfrage binden, ohne dass ein manuelles Escape erforderlich ist, was sicherer und effizienter ist.

Das obige ist der detaillierte Inhalt vonSind mysql_real_escape_string() und addslashes() gleichwertig bei der Verhinderung von SQL-Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage