MySQL-Injection-Prävention: Escape-Zeichen für maximale Sicherheit
Die Verhinderung von SQL-Injections ist entscheidend für den Schutz von Datenbanken vor böswilligen Angriffen. Bei Verwendung der Funktion mysql_real_escape_string() werden die Zeichen , n, r, \, ', " und Z maskiert, um Einschleusungsversuche zu verhindern.
Die ESAPI-Sicherheitsbibliothek von OWASP.org enthält jedoch zusätzliche Zeichen zum Escapen, einschließlich b (Rücktaste) und t (Tabulator). Es stellt sich die Frage: Warum sind diese Zeichen enthalten und sind sie wirklich notwendig?
Tabulator- und Rücktaste-Zeichen in Escape Prevention
Die Aufnahme von b- und t-Zeichen in den ESAPI-Escape-Mechanismus hängt wahrscheinlich mit der Möglichkeit von Einschleusungsversuchen mit diesen Zeichen zusammen. Stellen Sie sich das folgende Szenario vor:
Ein Angreifer sendet eine E-Mail mit einer angehängten Textdatei mit dem folgenden Inhalt Abfrage:
INSERT INTO students VALUES ("Bobby Tables",12,"abc",3.6);
Dies scheint eine harmlose Abfrage zu sein. Der Angreifer hat jedoch geschickt Rücktastezeichen vor der Abfrage platziert, wie folgt:
DROP TABLE students;\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b
Wenn der Empfänger die Datei abtastet und leitet es an MySQL weiter, die Rücktaste überschreibt die harmlose Abfrage, was zu den böswilligen DROP TABLE-Studenten führt; Befehl wird ausgeführt, ohne dass der Empfänger es weiß.
Darüber hinaus könnten Tabulatorzeichen (t) möglicherweise verwendet werden, um bösartigen Code in der Abfrage auszurichten, wodurch seine Lesbarkeit verbessert und die Erkennung erschwert wird. Daher bietet das Maskieren dieser Zeichen einen zusätzlichen Schutz vor potenziellen Injektionsversuchen.
Das obige ist der detaillierte Inhalt vonWarum maskiert ESAPI die Rücktaste (\b) und den Tabulator (\t) bei der SQL-Injection-Prävention?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!