update page now

Neu: EU CAPTCHA – DSGVO-konformer Bot-Schutz. Jetzt 3 Monate kostenlos testen.

Code auf einem Screen

SQL Injection

SQL Injection (SQLi) ist eine Cyberattacke, bei der Angreifer gezielt Schadcode in SQL-Datenbankabfragen einschleusen, um unbefugten Zugriff auf Datenbanken zu erlangen, sensible Daten zu stehlen, zu manipulieren oder ganze Systeme zu übernehmen. SQL Injection gehört zu den gefährlichsten und verbreitetsten Angriffsmethoden auf Webanwendungen. Erfahren Sie, wie SQL Injection funktioniert, welche Varianten es gibt, welche Folgen ein Angriff haben kann und wie Sie SQLi verhindern können – etwa mit der Myra WAF.

SQL Injection verhindern mit der Myra WAF
SQL Injection

01

Was ist SQL Injection?

SQL Injection (zu Deutsch: SQL-Einschleusung) ist ein verbreiteter Angriffsvektor. SQL (Structured Query Language) ist eine beliebte Datenbanksprache, die zum Aufbau von Datenstrukturen in relationalen Datenbanken sowie zum Bearbeiten und Abfragen von Datenbeständen eingesetzt wird. Aufgrund der weiten Verbreitung von SQL sind darauf basierende Programme und Webanwendungen auch sehr attraktiv für Angreifer.

 

Bei einer SQL Injection (kurz SQLi) nutzen Cyberkriminelle gezielt Sicherheitslücken im Quelltext von Software aus, um etwa über Eingabemasken eigene Befehle oder Schadcode in Programme einzubinden. Auf diese Weise gelangen Angreifer an wertvolle Datensätze. Die meisten SQLi Attacks sind auf fehlerhafte Skripte und Programme zurückzuführen.

 

Das Open Web Application Security Project (OWASP) führt Injection-Angriffe seit 2003 in seiner Referenzliste (OWASP Top 10) der kritischsten Sicherheitsrisiken und Angriffsvektoren für Webanwendungen.

Ansicht SQL-Injection

02

Wie funktioniert ein SQL-Injection-Angriff?

SQL Injections zielen häufig darauf ab, Datenbanken mit Benutzer- oder Geschäftsdaten zu korrumpieren. Angreifer nutzen gezielt Metazeichen wie ', ;, -- oder \, um SQL-Befehle zu erweitern oder zu unterbrechen.

 

Grundsätzlich ist ein SQLi-Angriff immer dann möglich, wenn:

  • Benutzereingaben nicht validiert oder bereinigt werden

  • Anwendungen Eingabedaten direkt in SQL-Abfragen einbetten

  • Fehlerhafte Skripte oder CGI-Schnittstellen den Datenbankzugang öffnen

 

Typische Angriffsszenarien umfassen:

  • Daten auslesen, z. B. Passwörter, E-Mail-Adressen, Zahlungsdaten

  • Daten manipulieren, z. B. Admin-Rechte erteilen oder Datensätze verfälschen

  • Daten löschen, z. B. gesamte Tabellen oder Datenbanken leeren

  • Systemzugriff erlangen, z. B. über eine Eingabe-Shell den Server übernehmen

Beispiel einer SQL Injection

Der Abruf eines Users über eine ID aus einer Datenbank erfolgt typischerweise über eine REST-API:

   https://myapi.com/users/123

Diese Eingabe würde wahrscheinlich zu einer (nicht gesäuberten) Anfrage wie dieser führen würde:

   SELECT * FROM users WHERE id = 123

Fehlt eine Eingabevalidierung, kann ein Angreifer die URL manipulieren:

   https://myapi.com/users/123;DELETE FROM users WHERE id != 0

Das Ergebnis: Alle Nutzerdaten werden gelöscht. 

Hat der Angreifer Kenntnisse über die Datenstruktur in der Datenbank, könnte er durch Hinzufügen oder Aktualisieren von Einträgen in der Datenbank an Admin-Rechte gelangen:

   https://myapi.com/users/123;UPDATE users SET admin = 1 WHERE id = 456

Weitere detaillierte Fallbeschreibungen einer SQLi Attack, inklusive Code-Beispielen finden sich auf der Webseite der OWASP Foundation.

03


Welche Arten von SQL Injection gibt es?

Es gibt mehrere technische Varianten von SQL-Injection-Angriffen. Die wichtigsten im Überblick:

  • In-Band SQLi

    Error-based

    In-Band SQLi

    Union-based

    Blind SQLi

    Boolean-based

    Blind SQLi

    Time-based

    Out-of-Band SQLi

    In-Band SQLi

    Datenbankfehlermeldungen liefern Infos über die Datenbankstruktur

    In-Band SQLi

    UNION-Operator kombiniert Ergebnisse mehrerer SELECT-Abfragen und gibt sie in der HTTP-Antwort zurück

    Blind SQLi

    Keine direkte Ausgabe; Angreifer schlussfolgert über True/False-Antworten

    Blind SQLi

    Zeitverzögerungen in der Antwort verraten Datenbankinhalt

    Out-of-Band SQLi

    Daten werden über einen separaten Kanal (z. B. DNS) exfiltriert

    Variante
    Untertyp
    Beschreibung

    In-Band SQLi

    Error-based

    Datenbankfehlermeldungen liefern Infos über die Datenbankstruktur

    In-Band SQLi

    Union-based

    UNION-Operator kombiniert Ergebnisse mehrerer SELECT-Abfragen und gibt sie in der HTTP-Antwort zurück

    Blind SQLi

    Boolean-based

    Keine direkte Ausgabe; Angreifer schlussfolgert über True/False-Antworten

    Blind SQLi

    Time-based

    Zeitverzögerungen in der Antwort verraten Datenbankinhalt

    Out-of-Band SQLi

    Daten werden über einen separaten Kanal (z. B. DNS) exfiltriert

    In-Band SQL Injection (direkt sichtbar)

    In-Band SQLi umfasst zwei Haupttechniken: Error-based und Union-based. Error-based Injection nutzt Datenbankfehlermeldungen, um Informationen über die Datenbankstruktur zu gewinnen. Union-based kombiniert Ergebnisse aus mehreren Tabellen über den UNION-SQL-Operator und ermöglicht so Datenextraktion und unbefugten Zugriff.

    • Error-based: Der Angreifer sendet SQL-Abfragen, die Fehler erzeugen, und wertet die Fehlermeldungen des Datenbankservers aus. So erhält er Informationen über die Datenbankstruktur. In manchen Fällen reicht Error-based SQLi allein aus, um eine gesamte Datenbank aufzuzählen.

    • Union-based: Union-based SQLi ist eine In-Band-Technik, die den UNION-SQL-Operator nutzt, um Ergebnisse von zwei oder mehr SELECT-Abfragen zu kombinieren und als Teil der HTTP-Antwort zurückzugeben.

    Blind SQL Injection (nicht direkt sichtbar)

    Blind SQL Injection ist eine Art von SQLi-Angriff, bei dem der Angreifer der Datenbank Wahr-oder-Falsch-Fragen stellt und die Antwort anhand der Reaktion der Anwendung bestimmt. Diese Angriffsmethode wird häufig eingesetzt, wenn die Webanwendung keine direkten Datenbankausgaben oder Fehlermeldungen zurückgibt, der Angreifer also „blind“ agiert. Statt Daten direkt abzulesen, stellt er der Datenbank gezielte Fragen und zieht aus dem Verhalten der Anwendung Rückschlüsse. Es gibt zwei Untertypen:

    • Boolean-based: Der Angreifer sendet SQL-Abfragen, die die Anwendung je nach Ergebnis (wahr oder falsch) unterschiedlich reagieren lassen. Abhängig vom Ergebnis ändert sich der Inhalt der HTTP-Antwort oder bleibt gleich.

    • Time-based: Time-based SQLi ist eine inferentielle Technik, bei der eine SQL-Abfrage die Datenbank zwingt, eine bestimmte Zeitspanne zu warten, bevor sie antwortet. Aus der Anwortzeit lassen sich dann Rückschlüsse auf den Wahrheitswert der Abfrage ziehen.

    Out-of-Band SQL Injection

    Out-of-Band SQL Injection ist eine selten eingesetzte SQLi-Variante, bei der Angriff und Datenexfiltration über zwei getrennte Kommunikationskanäle laufen. Der Angreifer schleust SQL-Befehle über den normalen Eingabekanal ein, die gestohlenen Daten werden jedoch nicht über die HTTP-Antwort zurückgegeben, sondern aktiv vom Datenbankserver an einen vom Angreifer kontrollierten externen Server übermittelt, typischerweise via DNS- oder HTTP-Request. Diese Methode setzt voraus, dass der Datenbankserver ausgehende Netzwerkverbindungen initiieren kann, was in gut abgesicherten Umgebungen oft unterbunden ist.

    04

    Welche Folgen können SQL-Injection-Angriffe haben?

    Mittels SQL Injection können Angreifer sensible Daten aus der Datenbank lesen, Datenbankdaten manipulieren (Einfügen, Aktualisieren, Löschen), administrative Operationen auf der Datenbank ausführen und in manchen Fällen Befehle an das Betriebssystem weitergeben.

     

    Betroffenen Organisationen drohen:

    • Datenverlust: Kundendaten, Passwörter, Kreditkarteninformationen werden gestohlen

    • Datenmanipulation: Datenbankeinträge werden verändert oder gelöscht

    • Rechteausweitung: Angreifer verschaffen sich Admin-Rechte und übernehmen schlimmstenfalls ganze Systeme

    • Finanzielle Schäden: Wenn Cyberkriminelle Zugang zu wertvollen Datensätzen erhalten, werden die betroffenen Organisationen erpressbar. Hinzu kommen Kosten für die Schadensbeseitigung und mögliche Bußgelder.

    • Reputationsverlust: Nicht zu unterschätzen sind die schwerwiegenden Auswirkungen von SQL-Injection-Angriffen auf das Image der betroffenen Organisation und damit auf das Kundenvertrauen.

     

    Effektiver Schutz vor SQL Injection ist daher nicht nur eine technische Notwendigkeit, sondern auch eine unternehmerische Pflicht – zum Schutz von Kundendaten, Systemintegrität und Unternehmensreputation.

    Spritze

    05

    Wie kann man SQL Injection erkennen?

    Entdecken Organisationen in ihren Lösungen Sicherheitslücken für SQL Injection Attacks, ist es meist schon zu spät. Wer nicht schon im Vorfeld auf die Schwachstelle im Quelltext stößt, den leiten in der Regel die Folgen einer erfolgreichen Attacke zum entsprechenden Fehler in der Software. Hinweise darauf sind etwa Datenabfluss, Manipulationen an Nutzerkonten oder Datensätzen sowie Fehlermeldungen, die auf zerstörte Daten hinweisen. Auch anormale Abfragen auf Webservern deuten häufig auf Injection-Versuche hin.

     

    Typische Anzeichen für eine SQLi:

    • Unerwartete Datenbankfehlermeldungen im Browser

    • Veränderte Seiteninhalte nach Eingabe von Sonderzeichen (', ;, --)

    • Zeitverzögerungen bei bestimmten Eingaben (Hinweis auf Time-based SQLi)

    • Ungewöhnliche Datenausgaben oder leere Ergebnisseiten

    Vernetzung von Geräten

    06

    Wie lässt sich SQL Injection verhindern?

    SQL Injection verhindern – das gelingt durch die konsequente Kombination aus möglichst sicherem Code, strikter Eingabevalidierung und einer vorgelagerten Web Application Firewall (WAF). Effektive SQL-Injection-Prävention setzt dabei auf mehrere Schutzebenen gleichzeitig, da keine einzelne Maßnahme allein einen vollständigen Schutz garantieren kann. In Kombination tragen die folgenden Maßnahmen dazu bei, SQL-Injection-Angriffe zuverlässig abzuwehren und Ihre Webanwendungen dauerhaft zu schützen.

    1. Prepared Statements (Parametrisierte Abfragen)

    Prepared Statements bzw. parametrisierte Abfragen zählen zu den wichtigsten Maßnahmen der SQL-Injection-Prävention auf Code-Ebene. Sie verhindern SQL Injection, indem Benutzereingaben strikt als Daten behandelt werden, nicht als ausführbarer Code. Die SQL-Abfrage wird zuerst definiert, Platzhalter werden für Benutzereingaben reserviert. Diese Eingaben werden dann sicher an die Abfrage übergeben, sodass keine schädlichen SQL-Befehle ausgeführt werden können.

    2. Eingabevalidierung und -bereinigung

    Als Sicherheitsmaßnahme zur Abwehr von SQL-Injection-Angriffen empfiehlt sich ein sauber verfasster Quellcode mit strikter Validierung und Hygiene von Eingabedaten. So sollten etwa nur erlaubte Zeichentypen und Formate akzeptiert und bestimmte Sonderzeichen gefiltert werden. 

    3. Fehlerbehandlung absichern

    Die Anwendung darf keine Datenbankfehlerdetails an Endnutzer weitergeben. Eigene Fehlerseiten und geeignete Logging-Mechanismen sollten Datenbankfehler abfangen, um Informationslecks zu verhindern, die Angreifern nützen könnten.

    4. Minimale Datenbankrechte vergeben (Least Privilege)

    Datenbankbenutzer sollten nur die Berechtigungen erhalten, die sie tatsächlich benötigen. Dabei hilft eine rollenbasierte Zugriffssteuerung (RBAC). So lässt sich der mögliche Schaden eines erfolgreichen Angriffs begrenzen.

    5. Web Application Firewall (WAF) einsetzen

    Eine WAF filtert eingehenden Traffic anhand definierter Regeln und erkennt typische SQL-Injection-Muster, bevor sie die Anwendung erreichen. Als vorgelagerte Schutzschicht bietet eine WAF einen SQL-Injection-Schutz, der unabhängig vom Anwendungscode greift – und damit auch dann schützt, wenn Schwachstellen im Code noch nicht behoben wurden. Der Schutz hängt dabei maßgeblich von der korrekten Konfiguration der Filterregeln ab.

    Myra WAF

    07

    Wie schützt die Myra WAF vor SQL Injection?

    Die Myra WAF bietet zuverlässigen Schutz vor SQL Injection und anderen gängigen Angriffsmustern wie Cross-Site Scripting (XSS) oder Directory Traversal. Als vorgelagerte Sicherheitslösung erkennt die WAF SQL-Injection-Angriffe und blockiert sie, bevor sie Ihre Webanwendungen erreichen – für effektive SQL-Injection-Prävention ohne Eingriffe in den Anwendungscode. Dazu stehen Ihnen von Myra definierte Standard-Regeln (Myra Tags) zur Verfügung. Zusätzlich können Sie entsprechend Ihren Anforderungen eigene WAF-Regeln zur Abwehr weiterer Bedrohungen definieren. Mehr zu verwandten Angriffsvektoren finden Sie in unseren Artikeln zu Cross-Site Scripting und den OWASP Top 10.

     

    Mehr über die Myra WAF erfahrenAuch als Managed WAF Service erhältlich

    FAQ: Häufige Fragen zu SQL Injection

    SQL Injection (kurz: SQLi) ist eine Cyberattacke, bei der Angreifer gezielt bösartige SQL-Befehle in eine Webanwendung einschleusen. Ziel ist es, unbefugten Zugriff auf Datenbanken zu erlangen, sensible Daten zu stehlen, zu manipulieren oder ganze Systeme zu übernehmen. SQL Injection zählt laut OWASP zu den kritischsten Sicherheitsrisiken für Webanwendungen.

    Über den Autor

    Björn Greif

    Senior Editor

    Über den Autor

    Björn Greif startete seine Redakteurskarriere 2006 beim IT-Nachrichtenportal ZDNet. 10 Jahre und exakt 12.693 Artikel später engagierte er sich beim deutschen Start-up Cliqz für mehr Privatsphäre und Datenschutz im Web. Vom Datenschutz zur IT-Sicherheit war es dann nur noch ein kleiner Schritt: Seit 2020 schreibt Björn bei Myra über die neusten Trends und Entwicklungen in der Welt der Cybersecurity.