G 5.131 SQL-Injection

Greift eine Anwendung auf die Daten einer SQL-Datenbank zu, so werden Befehle in Form von SQL-Anweisungen an die Datenbank übermittelt. Ist die Anwendung anfällig für SQL-Injection, kann ein Angreifer durch Manipulation der Eingabedaten geänderte oder zusätzliche SQL-Anweisungen injizieren, die von der Anwendung an die Datenbank weitergeleitet und dort bearbeitet werden. Auf diese Weise können wie bei einem direkten Datenbankzugriff beliebige SQL-Anweisungen ausgeführt werden und so Sicherheitsmechanismen der Anwendung beim Datenzugriff umgangen werden.

Eine SQL-Injection kann daher z. B. die folgenden Auswirkungen haben:

Das Einschleusen der SQL-Anweisung wird dabei durch eine unzureichende Validierung von Eingabedaten innerhalb der Anwendung ermöglicht, die in dieser Form direkt in eine dynamische Datenbankabfrage eingebaut werden (siehe auch G 4.84 Unzureichende Validierung von Ein- und Ausgabedaten bei Webanwendungen und Web-Services).

Die SQL-Injection ist ein spezieller Injection-Angriff (siehe G 5.174 Injection-Angriffe), der sich ausschließlich gegen SQL-Datenbanken richtet. So ist das grundsätzliche Vorgehen zum Einschleusen von Befehlen auch bei anderen Interpretern möglich (z. B. LDAP-Injection, XML-Injection).