Heim >Datenbank >MySQL-Tutorial >Ist addslashes() in PHP wirklich sicher gegen SQL-Injection, selbst bei Multibyte-Zeichen?
PHPs addslashes()
und seine SQL-Injection-Schwachstelle
Die PHP-Funktion addslashes()
, die häufig als Schutz vor SQL-Injection-Angriffen verwendet wird, weist Einschränkungen auf, die die Sicherheit beeinträchtigen können, insbesondere beim Umgang mit Multibyte-Zeichen. In diesem Artikel werden Szenarien untersucht, in denen addslashes()
keinen angemessenen Schutz bietet.
Probleme bei der Codierung von Multibyte-Zeichen
Wenn Eingabedaten Multibyte-Zeichen enthalten, kann addslashes()
fälschlicherweise Backslashes einfügen, wodurch die Escape-Sequenz unterbrochen wird und Schwachstellen entstehen. Dies liegt daran, dass addslashes()
die Codierung von Multibyte-Zeichen möglicherweise nicht genau verarbeitet.
Anschauliches Beispiel:
<code class="language-php">$input = "⭐' OR 1=1 --"; $escapedInput = addslashes($input); // Escapes as ⭐\' OR 1=1 --</code>
Hier bleibt das einfache Anführungszeichen nach dem Multibyte-Sternzeichen ohne Escapezeichen, sodass das System für SQL-Injection offen bleibt.
Codierungsspezifische Schwachstellen
Das Problem ergibt sich aus der potenziellen Unfähigkeit von addslashes()
, Multibyte-Zeichenkodierungen wie EUC-JP oder Shift-JIS korrekt zu interpretieren. Bestimmte Zeichenfolgen in diesen Codierungen enthalten möglicherweise ein nachgestelltes 0x5c-Byte, was addslashes()
dazu verleitet, ein Multibyte-Zeichen zu erstellen, anstatt das einfache Anführungszeichen zu maskieren.
Best Practices: Mehr erfahren addslashes()
Obwohl addslashes()
einen gewissen grundlegenden Schutz bietet, ist es keine zuverlässige Lösung zur Verhinderung von SQL-Injection, insbesondere bei Multibyte-Zeichensätzen. Für eine robuste Sicherheit verwenden Sie fortgeschrittenere Techniken wie mysqli_real_escape_string()
(für MySQLi) oder idealerweise vorbereitete Anweisungen. Vorbereitete Anweisungen sind der empfohlene Ansatz zur Vermeidung von SQL-Injection-Schwachstellen.
Das obige ist der detaillierte Inhalt vonIst addslashes() in PHP wirklich sicher gegen SQL-Injection, selbst bei Multibyte-Zeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!