SQL-Injection (SQLi) ist das Einschleusen von Datenbankbefehlen über Eingaben einer Anwendung: Wird Nutzereingabe ungeprüft in SQL-Abfragen eingebaut, kann ein Angreifer die Abfrage umschreiben — Daten auslesen, verändern, löschen oder die Authentifizierung umgehen.
Trotz jahrzehntelanger Bekanntheit gehört SQLi weiter zu den OWASP-Top-Risiken: Altanwendungen, zusammengekaufte Systeme und schnelle Erweiterungen liefern verwundbaren Code nach — und automatisierte Scanner finden ihn zuverlässig.
Wie SQL-Injection funktioniert
Das klassische Beispiel: Ein Login baut die Abfrage aus Benutzereingaben zusammen. Die Eingabe eines präparierten Ausdrucks macht die Passwortprüfung wahr — der Angreifer ist angemeldet. Fortgeschrittene Varianten lesen per UNION fremde Tabellen aus oder arbeiten blind über Zeitverzögerungen, wenn die Anwendung keine Fehler verrät.
Die saubere Lösung liegt im Code: parametrisierte Abfragen (Prepared Statements) trennen Befehl und Daten strikt — Eingaben können die Abfrage dann nicht mehr verändern. Eine WAF ergänzt als zweite Schicht: Sie blockt bekannte Injektionsmuster und schirmt frisch gemeldete Lücken ab, bis der Code gepatcht ist.
Schutz in der Tiefe
- Prepared Statements überall — keine zusammengesetzten SQL-Strings.
- Minimalrechte für Datenbankkonten der Anwendung: nur nötige Tabellen und Operationen.
- WAF mit Managed Rules als Schutzschicht vor Alt- und Fremdcode.
- Fehlermeldungen kargen halten: keine SQL-Details an den Client.