Zum Inhalt springen

SQL Injection

oder auch SQLi

Männliche Person, frontal, schaut in die Kamera; trägt kariertes Hemd über dunkelfarbigem T‑Shirt; heller Innenraum mit unscharfem Monitor oder Poster links und Fenster rechts.

von Richard Albrecht am 04.11.2026

SQL Injection ist ein Angriff, bei dem eine Eingabe zum Teil der Datenbankabfrage wird. Statt einer E-Mail-Adresse schickt der Angreifer Zeichen, die die Abfrage umschreiben, und bekommt Daten, die für ihn nicht gedacht waren.

SQL Injection

Ein Angriff, bei dem eine Eingabe zum Teil der Datenbankabfrage wird.
Beispiel: „Die SQL Injection steckte in einem Filter, der seit Jahren unverändert lief.“

Auch: Die Kurzform lautet SQLi. Betroffen sind alle Stellen, an denen Eingaben in eine Abfrage wandern, von der Suche über Filter bis zur Sortierung.

Abgrenzung zum XSS: Dort läuft fremder Code im Browser der Besucher. Hier läuft er in der Datenbank des Betreibers.

Wie eine SQL Injection funktioniert

Die obere Zeile baut die Abfrage aus Text zusammen, die untere übergibt die Eingabe als Wert. Nur in der oberen kann die Eingabe die Bedeutung der Abfrage verändern.

// Angreifbar: die Eingabe wird Teil der Abfrage
$sql = "SELECT * FROM kunden WHERE email = '" . $_POST['email'] . "'";

// Sicher: die Eingabe bleibt ein Wert
$stmt = $pdo->prepare('SELECT * FROM kunden WHERE email = ?');
$stmt->execute([$_POST['email']]);

Das Verfahren unten heißt vorbereitete Abfrage. Die Datenbank bekommt zuerst den Bauplan und danach die Werte; was im Wert steht, kann den Bauplan nicht mehr ändern. Jede verbreitete Umgebung für PHP bringt das mit, ebenso jede Abfrageschicht eines Frameworks.

Was außer vorbereiteten Abfragen gegen SQL Injection hilft

Drei Dinge, die den Schaden begrenzen. Der Datenbankbenutzer der Anwendung bekommt nur die Rechte, die er braucht, und schon gar kein Recht, Tabellen zu löschen. Fehlermeldungen gehen ins Protokoll; der Besucher bekommt eine allgemeine Meldung, weil die ausführliche den Bauplan verrät. Und Eingaben werden auf das geprüft, was sie sein sollen, etwa eine Zahl.

Warum SQL Injection immer noch vorkommt

Weil alter Code weiterläuft. Die Lücke steckt selten im Hauptweg einer Anwendung, sondern in einem Export, einem Filter oder einer Schnittstelle aus einem früheren Projekt. In den OWASP Top 10 steht die Familie der Injections seit der ersten Ausgabe.

Siehe auch:

MySQL

Das verbreitetste relationale Datenbanksystem im Webhosting, hinter WordPress wie hinter Laravel.

#Hosting & Webserver

PHP

Die Programmiersprache, in der die meisten Websites auf dem Server laufen.

#Programmiersprachen

XSS (Cross-Site Scripting)

Ein Angriff, bei dem fremder Code im Browser der Besucher im Namen der Seite läuft.

#Web-Security

OWASP Top 10

Die Liste der zehn wichtigsten Risikogruppen in Webanwendungen, herausgegeben vom OWASP.

#Web-Security

Sicherheitslücke

Ein Fehler in Software oder Konfiguration, über den sich etwas tun lässt, das nicht vorgesehen ist.

#Web-Security

Web Application Firewall (WAF)

Ein Filter vor der Anwendung, der Anfragen auf bekannte Angriffsmuster prüft.

#Web-Security