Ich frage mich, ob es möglich ist, 100% der möglichen SQLi-Angriffe mit einem einfachen regulären Ausdruck zu erkennen.
Mit anderen Worten, mit sehr einfachem PHP-Code als Beispiel:
if (preg_match ("/ select / i", $ input)) {attack_log ("Mögliches SELECT SQLi erkannt.")}
Die Fragen sind:
- Fängt dieser Regex alle möglichen SQLi-Angriffe ab, die SELECT verwenden? Wenn nicht, ist es möglich, diesen regulären Ausdruck so zu ändern, dass alle Injektionen erkannt werden, die auf SELECT basieren?
- Ist es möglich, diesen regulären Ausdruck so zu ändern, dass alle möglichen SQLi abgefangen werden, also nicht nur SELECT-Anweisungen, aber auch alles andere? Ich befürchte, dass ich, um dies zu erreichen, jedes mögliche SQL-Schlüsselwort zur Regex hinzufügen müsste, einschließlich "AND" und "OR".
- Angenommen, es ist nicht möglich oder machbar Gibt es eine begrenzte Teilmenge von Schlüsselwörtern, mit denen ich die überwiegende Mehrheit der möglichen Angriffe erkennen kann, um alle SQLi zu erkennen, indem versucht wird, alle möglichen SQL-Schlüsselwörter abzugleichen?