SQL-Injection
SQL-Injection ist eine Angriffstechnik, bei der Angreifer über ungeprüfte Nutzereingaben schädlichen SQL-Code in Datenbankabfragen einschleusen, um Daten auszulesen, zu verändern oder zu löschen.
Kurz erklärt
SQL-Injection entsteht, wenn eine Anwendung Nutzereingaben direkt und ungeprüft in eine SQL-Datenbankabfrage einbaut. Gelingt es einem Angreifer, statt eines normalen Eingabewerts eigenen SQL-Code einzufügen, kann dieser Code als Teil der eigentlichen Abfrage ausgeführt werden - mit potenziell vollem Zugriff auf die zugrunde liegende Datenbank.
Beispiel
Ein Login-Formular baut die Eingabe des Nutzernamens ungeprüft in eine Abfrage wie SELECT * FROM users WHERE name = 'EINGABE' ein. Gibt ein Angreifer statt eines normalen Namens eine speziell konstruierte Zeichenfolge ein, kann er die Bedingung der Abfrage so manipulieren, dass sie stets wahr wird - und sich dadurch ohne gültiges Passwort einloggen.
Warum ist das relevant?
SQL-Injection zählt seit Jahrzehnten zu den kritischsten und am häufigsten ausgenutzten Web-Sicherheitslücken, da ein erfolgreicher Angriff direkten Zugriff auf komplette Datenbanken ermöglichen kann - inklusive Kundendaten, Passwörtern oder Zahlungsinformationen. Trotz seines Alters taucht SQL-Injection regelmäßig weiterhin in Sicherheitsvorfällen auf, meist durch fehlende Eingabevalidierung in älteren oder schlecht gewarteten Systemen.
Häufige Missverständnisse
SQL-Injection lässt sich nicht zuverlässig durch einfaches Filtern einzelner “gefährlicher” Zeichen verhindern - die robuste und heute empfohlene Lösung sind parametrisierte Abfragen (Prepared Statements), bei denen Nutzereingaben strikt getrennt von der eigentlichen SQL-Struktur behandelt werden. Auch betrifft SQL-Injection nicht nur klassische Login-Formulare: Jede Stelle, an der Nutzereingaben - auch versteckte wie URL-Parameter oder HTTP-Header - in Datenbankabfragen einfließen, kann potenziell angreifbar sein.