Ich war neugierig, ob es möglich ist, sich vor einem SQL-Injection-Angriff zu schützen, indem alle Leerzeichen aus einer String-Eingabe entfernt werden.
Ich habe SQL-Injection unter OWASP nachgelesen. Aber sie erwähnen nichts über das Entfernen von Leerzeichen, also war ich neugierig, warum es funktionieren würde oder nicht?
Ich habe mir diese Frage angesehen, welche fragt nach trim
, und die oberste Antwort lautet wie folgt:
Nein, das Hinzufügen eines Trims verhindert nicht die SQL-Injektion.
trim
entfernt nur Leerzeichen an der Außenseite Ihrer Zeichenfolge.Wählen Sie * aus einer Tabelle aus, wobei der Name '%' + @ SearchString + '%'
Wenn Sie @SearchString so etwas wie
'' Update aTable gehalten haben, setzen Sie someColumn = 'JackedUpValue', wobei someColumn wie '
Wenn Sie dann Füge alles zusammen und führe es dynamisch aus.
Wähle * aus einer Tabelle, wobei Name wie '%' aktualisiert wird. aTable set someColumn = 'JackedUpValue', wobei someColumn wie '%'
Wenn Sie jedoch diese Suchzeichenfolge verwendet haben
update aTable set someColumn = 'JackedUpValue', wobei someColumn wie
ist und führen Sie die in dieser Frage gezeigte Operation aus. Würden Sie nicht
updateaTablesetsomeColumn = 'JackedUpValue'wheresomeColumnlike
was sollte nicht ausgeführt werden, oder?
Ich bin gespannt, ob es irgendeine Form von SQL-Injection gibt, die dies verhindern könnte. Gibt es ein Wort gefährliche Befehle? Wenn dies besiegt werden kann, würde das Entfernen von Leerzeichen zumindest ein wenig zur Verteidigung beitragen?
Hinweis: Ich stelle diese Frage nur aus Neugier, nicht um die Verwendung zu umgehen die "richtigen" Methoden der SQL Injection Prevention.