Heim >Datenbank >MySQL-Tutorial >Warum sollten Backspace- und Tabulatorzeichen in MySQL-Abfragen mit Escapezeichen versehen werden?

Warum sollten Backspace- und Tabulatorzeichen in MySQL-Abfragen mit Escapezeichen versehen werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 22:11:021080Durchsuche

  Why Should Backspace and Tab Characters Be Escaped in MySQL Queries?

MySQL-Injections und Character Escaping

Bei der Verwendung der mysql_real_escape_string()-Funktion aus der MySQL-API muss unbedingt sichergestellt werden, dass alle anfälligen Zeichen werden maskiert, um SQL-Injections zu verhindern. Die MySQL-Dokumentation schreibt vor, dass die folgenden Zeichen maskiert werden müssen:

<pre class="brush:php;toolbar:false">0x00 : "\0",
0x08 : "\b",
0x09 : "\t",
0x1a : "\Z",
0x22 : '\"',
0x25 : "\%",
0x27 : "\'",
0x5c : "\\",
0x5f : "\_",
\n \r \ ' " \Z

Beim Vergleich dieser Liste mit dem Python-Port von ESAPI werden jedoch weitere Zeichen für die Escapezeichen identifiziert, darunter:

SELECT a FROM b WHERE c = '...user input ...';

Das Problem ergibt sich aus der Notwendigkeit, die Zeichen Backspace (b) und Tabulator (t) zu maskieren.

Adressierung der Abfrage

"\bDELETE_MY_DATABASE"

Wenn die Benutzereingabe Tabulatoren oder Backspace enthält kann es zu Sicherheitsrisiken kommen. Stellen Sie sich ein Szenario vor, in dem ein böswilliger Akteur am Ende der Benutzereingabe Folgendes einfügt:

Bei der Übergabe an die Datenbank löscht das Rücktastezeichen das vorangehende einfache Anführungszeichen, was zur Ausführung des böswilligen DELETE-Befehls führt Abfrage.

ESAPI-Sicherheitsbibliothek

Die ESAPI-Sicherheitsbibliothek enthält Rücktaste und Tabulatorzeichen zum Escapezeichen aufgrund potenzieller Sicherheitsprobleme:

  • Tabulator (t): Tabulatorzeichen innerhalb einer Zeichenfolge können das erwartete Verhalten der Datenbank stören und es Angreifern möglicherweise ermöglichen, Daten zu manipulieren oder böswillige Abfragen einzuschleusen.
  • Rücktaste (b): Wie im Beispiel der Catting-Datei zu sehen ist, können Backspace-Zeichen zuvor eingegebene Zeichen überschreiben, wodurch es möglich wird, bösartigen Code am Anfang einer Abfrage hinzuzufügen, ohne dass er sichtbar vorhanden ist.

Fazit

Daher wird empfohlen, beim Umgang mit Benutzereingaben in MySQL-Abfragen Vorsicht walten zu lassen und alle in der ESAPI-Sicherheitsbibliothek angegebenen Zeichen mit Escapezeichen zu versehen. Während bestimmte Zeichen wie die Rücktaste und der Tabulator nicht grundsätzlich gefährlich erscheinen, können ihre Auswirkungen in Verbindung mit anderen Mechanismen erhebliche Sicherheitsrisiken darstellen.

Das obige ist der detaillierte Inhalt vonWarum sollten Backspace- und Tabulatorzeichen in MySQL-Abfragen mit Escapezeichen versehen werden?. 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