Heim >Datenbank >MySQL-Tutorial >Warum sollten Backspace- und Tabulatorzeichen in MySQL-Abfragen mit Escapezeichen versehen werden?
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:
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!