Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Web Application Security Glossar

SQL Injection

SQL Injection ist ein Angriff, bei dem ein Angreifer schädlichen SQL-Code in Eingabefelder oder Parameter einer Webanwendung einschleust, um unautorisierten Zugang zur Datenbank zu erhalten oder Daten zu manipulieren.

SQL Injection (SQLi) gehört seit Jahren zu den häufigsten und kritischsten Web-Sicherheitslücken und steht seit den ersten OWASP Top 10 (2003) auf der Liste. Ein erfolgreicher SQLi-Angriff kann zur vollständigen Datenbankoffenlegung, Authentifizierungs-Bypass, Datenmanipulation oder sogar zu Remote Code Execution führen.

Wie SQL Injection funktioniert

Eine verwundbare Login-Abfrage:

SELECT * FROM users WHERE username = '$input_user' AND password = '$input_pass'

Eingabe: username = ' OR '1'='1' --

Resultierende Abfrage:

SELECT * FROM users WHERE username = '' OR '1'='1' -- AND password = '...'

'1'='1' ist immer wahr, -- kommentiert den Rest aus. Ergebnis: Login ohne gültiges Passwort.

SQL Injection Varianten

In-band SQLi: Direkte Rückgabe der Daten in der HTTP-Antwort

  • Union-based: Zusammenführung mit anderen Tabellendaten
  • Error-based: Datenbankfehler liefern Informationen

Blind SQLi: Keine direkte Rückgabe, aber Verhaltensunterschiede erkennbar

  • Boolean-based: Unterschiedliche Antworten je nach true/false-Bedingung
  • Time-based: Verzögerte Antworten durch SLEEP()-Funktionen

Out-of-band SQLi: Daten werden über externen Kanal (DNS, HTTP) exfiltriert

Schutzmaßnahmen

Prepared Statements / Parameterized Queries sind die wichtigste Gegenmaßnahme:

cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))

Weitere Maßnahmen:

  • Input Validation und Whitelisting
  • Least-Privilege-Datenbanknutzer (kein root oder sa)
  • Web Application Firewall (WAF) als zusätzliche Schicht
  • Regelmäßige Penetrationstests und Code Reviews

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung