SQL Injection

SQL Injection ist ein Angriff auf Webseiten, bei dem jemand über ein normales Eingabefeld heimlich Befehle an die dahinterliegende Datenbank schickt. Gelingt das, kann der Angreifer fremde Daten auslesen, verändern oder löschen.

Hinter fast jeder Webseite steckt eine Datenbank: ein digitales Verzeichnis, in dem Nutzernamen, Passwörter und Bestellungen gespeichert sind. Wenn du dich einloggst, schickt die Webseite eine Anfrage an dieses Verzeichnis. Diese Anfrage ist ein kurzer Satz in einer festen Befehlssprache, und dein eingetippter Name wird einfach in den Satz hineinkopiert. Bei einer SQL Injection tippt ein Angreifer nun keinen Namen ein, sondern Zeichen, die die Webseite als zusätzlichen Befehl versteht. Der Server führt diesen Befehl aus, weil er nicht unterscheiden kann, was Text und was Anweisung ist. So kann ein Angreifer Daten abgreifen, ohne jemals ein Passwort zu kennen.

Warum ein einziges Eingabefeld eine Firma ruinieren kann

SQL Injection gehört zu den ältesten bekannten Angriffen im Internet. Trotzdem taucht sie bis heute regelmäßig in Sicherheitsberichten auf. Der Grund ist einfach: Der Fehler steckt nicht in einem Produkt, das man aktualisieren könnte, sondern in selbst geschriebenem Programmcode. Jede neue Webseite kann ihn erneut enthalten.

Der Schaden ist oft riesig, weil die Datenbank alles auf einmal enthält. Ein erfolgreicher Angriff liefert nicht ein Konto, sondern potenziell Millionen Datensätze. Bei mehreren großen Datenlecks der letzten Jahre war genau diese Lücke der Einstiegspunkt. Betroffene Unternehmen zahlen danach Bußgelder nach der europäischen Datenschutz-Grundverordnung und verlieren das Vertrauen ihrer Kunden.

Dazu kommt: Der Angriff braucht keine besondere Ausrüstung. Ein Browser und Geduld reichen aus. Es gibt sogar frei verfügbare Programme, die Webseiten automatisch nach solchen Lücken absuchen. Deshalb werden auch kleine Seiten angegriffen, die niemand für interessant hält.

Der Trick mit dem Anführungszeichen

Ein Beispiel macht das Prinzip klar. Ein Login-Formular baut intern einen Satz wie: Suche den Nutzer mit dem Namen 'Anna'. Die Anführungszeichen markieren dabei, wo der eingegebene Text anfängt und aufhört. Tippt ein Angreifer nun selbst ein Anführungszeichen ein, schließt er den Textbereich vorzeitig. Alles, was er danach schreibt, landet außerhalb der Anführungszeichen und gilt für den Server als Befehl.

Ein klassischer Zusatz lautet sinngemäß: oder wahr. Damit ist die Bedingung immer erfüllt, und die Datenbank liefert einfach den ersten Nutzer zurück. Der Angreifer ist eingeloggt, ohne das Passwort zu kennen. Mit aufwendigeren Varianten lassen sich ganze Tabellen anhängen oder löschen.

Der Schutz dagegen ist seit Jahrzehnten bekannt und heißt vorbereitete Anweisung. Dabei schickt das Programm den Befehl und die Eingabe getrennt an die Datenbank. Der Befehlssatz steht vorher fest, die Eingabe wird nur noch als Wert eingesetzt. Ein Anführungszeichen ist dann nur ein Zeichen und keine Anweisung mehr. Wichtig ist die Abgrenzung zu einem verbreiteten Irrtum: Verdächtige Wörter herauszufiltern reicht nicht, weil Angreifer die Schreibweise fast beliebig variieren können.

Von Sicherheitsmeldungen bis zu KI-generiertem Code

In Nachrichten begegnet dir der Begriff meist nach einem Datenleck. Wenn es heißt, Angreifer hätten eine Schwachstelle in einer Webanwendung ausgenutzt, steckt oft eine SQL Injection dahinter. Auch in der bekannten Liste der häufigsten Web-Sicherheitsrisiken, der OWASP Top Ten, steht sie seit Jahren weit oben.

In Produkten begegnet man ihr indirekt. Web-Application-Firewalls sind Schutzsysteme, die verdächtige Anfragen vor der Webseite abfangen. Sicherheitstests, sogenannte Penetrationstests, suchen gezielt nach solchen Lücken. Für Entwickler übernehmen moderne Programmierbibliotheken die sichere Trennung von Befehl und Eingabe automatisch.

Neue Aktualität bekommt das Thema durch KI-Assistenten, die Programmcode schreiben. Diese Systeme lernen aus vorhandenem Code im Internet, und darin stecken auch viele unsichere Beispiele. Untersuchungen zeigen, dass generierter Code solche Lücken reproduzieren kann. Wer KI beim Programmieren einsetzt, muss den Code deshalb weiterhin prüfen.

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.