Sonderzeichen in SQL-Injections maskieren
Um SQL-Injections zu verhindern, ist es wichtig, bestimmte Zeichen zu maskieren, die die Abfrageausführung manipulieren können. Gemäß der mysql_real_escape_string()-Funktion der MySQL-API sollten diese Zeichen maskiert werden:
<pre class="brush:php;toolbar:false">0x00 : "\0", 0x08 : "\b", 0x09 : "\t", 0x0a : "\n", 0x0d : "\r", 0x1a : "\Z", 0x22 : '\"', 0x25 : "\%", 0x27 : "\'", 0x5c : "\\", 0x5f : "\_",
Die ESAPI-Sicherheitsbibliothek von OWASP.org für Python geht jedoch über diese Zeichen hinaus und umfasst Folgendes in ihrem Codierungsmechanismus:
SELECT a FROM b WHERE c = '...user input ...';
Während es verständlich ist, warum Metazeichen wie „%“ und „_“ maskiert werden sollten, wirft die Einbeziehung von Rückschritt- (‚b‘) und Tabulatorzeichen (‘t‘) Fragen auf.
Sicherheitsbedenken bei Tabulatoren und Backspace-Zeichen
Tabulatorzeichen ('t')
Ein Tabulatorzeichen (ASCII-Code 9) bewegt den Cursor zum nächsten Tabstopp, der für ein bestimmtes System definiert ist. In einer SQL-Abfrage könnte ein Tabulator verwendet werden, um Leerzeichen einzufügen oder Daten auszurichten. Abhängig von den Tabstopp-Einstellungen könnte ein Angreifer möglicherweise eine Abfrage ändern oder Leerzeichen einfügen, was zu unbeabsichtigtem Verhalten führt.
Rücktaste ('b')
Eine Rücktaste Zeichen (ASCII-Code 8) verschiebt den Cursor um ein Zeichen nach hinten und überschreibt ihn somit. In einer SQL-Abfrage könnte eine Rücktaste verwendet werden, um zuvor eingegebene Daten zu löschen, was möglicherweise zu Injektionen oder Datenmanipulationen führen könnte.
Beispiel: Ausnutzung von Rücktastezeichen
Bedenken Sie Folgendes Abfrage:
Bobby]dor[p TA[ble[s
Wenn ein böswilliger Benutzer einen Wert mit Rückschrittzeichen eingibt, kann er möglicherweise einen Teil der Abfrage löschen, was zu einem unbeabsichtigten Verhalten führt. Wenn Sie beispielsweise diese Eingabe einfügen:
SELECT a FROM b WHERE c = 'Bobby';
Nachdem die Rücktaste die Zeichen „[dor[p TA[ble[s]“ gelöscht hat, wird die Abfrage effektiv zu:
Das ist bösartig Die Eingabe könnte möglicherweise alle Zeilen zurückgeben, in denen c gleich „Bobby“ ist, wodurch möglicherweise vertrauliche Informationen gefährdet werden.
Fazit
Escape-Tabulator- und Rücktaste-Zeichen sind zwar normalerweise nicht erforderlich, sie sind jedoch vorhanden kann in bestimmten Szenarien hilfreich sein, um SQL-Injections zu verhindern. Durch das Maskieren dieser Zeichen können Entwickler sicherstellen, dass böswillige Benutzer potenzielle Schwachstellen nicht ausnutzen können, um SQL-Abfragen zu manipulieren oder zu gefährden.
Das obige ist der detaillierte Inhalt vonSollten Backspace- und Tabulatorzeichen in SQL-Injections mit Escapezeichen versehen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!