Methoden zur Erkennung von SQL-Injektionen
Die Erkennung von SQL-Injektionen ähnelt in gewisser Weise der E-Mail-Spam-Filterung. Die Probleme, die Entwickler solcher Systeme lösen müssen, sind ebenfalls ähnlich.
Werfen wir also einen Blick auf die Methoden der Spam-Filterung, die von E-Mail-Servern verwendet werden:
- Analyse des Textes von Nachrichten mit verschiedenen Algorithmen (z.B. Bayesianische Filterung).
- Inhaltsfilterung. Dazu gehört das Suchen nach Spam-Anzeichen wie Links, Produktangeboten, Schlüsselwörtern usw. im Text der Nachrichten.
- Filterung basierend auf statistischen Informationen über Entscheidungen, die von anderen Benutzern des E-Mail-Servers getroffen wurden (zu prüfen, ob sie ähnliche Nachrichten als Spam markiert haben).
- Verwendung von Informationen über die Glaubwürdigkeit des Mail-Servers, die von anderen Diensten erhalten wurden.
Jeder dieser Tests ist in Untertests unterteilt. Jeder Untertest wird mit einem bestimmten „Kostenpunkt“ (in Punkten) bewertet. Wenn die eingehende Nachricht den Untertest besteht, werden ihre Punkte dem Gesamttestergebnis hinzugefügt. Der Punktwert kann sowohl positiv als auch negativ sein. Wenn die Testung einer Nachricht abgeschlossen ist, summiert das Anti-Spam-System das Gesamtergebnis. Je höher die Punktzahl, desto größer ist die Wahrscheinlichkeit, dass die getestete Nachricht Spam enthält.
Beispielsweise verfügt der Spam-Filter Spam Assassin über eine konfigurierbare Schwelle. Wenn das Gesamtergebnis des Tests die Schwelle überschreitet, wird die Nachricht als Spam betrachtet. Normalerweise wird die Schwelle so konfiguriert, dass es nicht ausreicht, wenn eine Nachricht einen Test besteht, um den Schwellenwert zu überschreiten (um als Spam markiert zu werden). Die Funktionsprinzipien anderer Filter ähneln denen von Spam Assassin.
Keine einzige Spam-Filtermethode garantiert allein vollständigen Schutz vor unerwünschten Nachrichten sowie vor Fehlalarmen. Deshalb wird in der Praxis eine Kombination verschiedener Methoden verwendet. Die Konfigurierung der Gesamtschwelle und der „Kosten“ der Untertests bestimmt das „Verdachtsniveau“ des Filters.
Die Filterung von SQL-Injektionen funktioniert fast ähnlich wie Spam-Filter. Auf der DAF-Ebene trifft man in den meisten Fällen auf gültigen SQL-Code, weshalb es notwendig ist, indirekte Anzeichen zu verwenden, um festzustellen, ob die Abfrage SQL-injiziert ist.
DataSunrise kann SQL-Injektionen anhand der folgenden Zeichen erkennen.
- Anzahl ungültiger Abfragen, die von einem bestimmten Host kommen oder von einem bestimmten Client gestellt werden.
- Vorhandensein von konstanten Bedingungen in der Abfrage, die immer TRUE oder FALSE zurückgeben.
- Ob Kommentare im Abfragekörper vorhanden sind und ob diese Kommentare Teile von SQL-Abfragen enthalten.
- OR- und UNION-Blöcke im Abfragecode.
- Andere Bedingungen.
Die Fähigkeit, jedes Zeichen allein zu erkennen, reicht nicht aus, um einen SQL-Injektionsangriff zu erkennen, aber die Fähigkeit, all diese Zeichen in einer Abfrage zu erkennen, ermöglicht es DataSunrise, essentiellen Schutz zu bieten, wie im demonstrativen Beispiel von wie DataSunrise vor SQL-Injektionen schützt gezeigt wird.
Abschließend sei erwähnt, dass vollständiger Schutz vor SQL-Injektionsangriffen nur durch die Verwendung eines hochwertigen und ordnungsgemäß getesteten Anwendungsservers erreicht werden kann.