SQL-Injection: Wie und warum sie funktioniert
Verstehen Sie klassische, blinde und Out-of-Band-SQL-Injection und warum parametrisierte Abfragen sie verhindern.
SQL-Injection: Wie und warum sie funktioniert ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist SQL-Injection?
SQL-Injection (SQLi) tritt auf, wenn von Benutzern bereitgestellte Eingaben ohne ordnungsgemäße Bereinigung in eine SQL-Abfrage aufgenommen werden. Dadurch können Angreifer die Abfragelogik manipulieren. Sie gehört zu den ältesten und folgenschwersten Sicherheitslücken im Web.
Funktionsweise von SQL-Injection
Ein Anmeldeformular führt folgende Abfrage aus: SELECT * FROM users WHERE username='INPUT' AND password='INPUT'
Gibt der Angreifer ' OR 1=1-- als Benutzernamen ein, wird die Abfrage zu: SELECT * FROM users WHERE username='' OR 1=1--' AND password='...' — sie gibt alle Benutzer zurück.
Arten von SQL-Injection
Varianten von SQLi:
- In-band: Ergebnisse werden direkt in der Antwort zurückgegeben (klassisch, fehlerbasiert)
- Blind Boolean: keine direkte Ausgabe; Daten werden aus Antworten auf Wahr/Falsch-Bedingungen abgeleitet
- Blind Time-based: Daten werden aus Antwortverzögerungen abgeleitet (
SLEEP(5)) - Out-of-band: Daten werden über DNS-/HTTP-Anfragen exfiltriert
UNION-basierte Injection
UNION-Angriffe hängen Ergebnisse aus vom Angreifer kontrollierten Abfragen an:
-- Discover number of columns:
id=1 ORDER BY 3--
-- Extract data:
id=1 UNION SELECT username,password,NULL FROM users--Fehlerbasierte Injection
Fehlermeldungen geben die Datenbankstruktur preis. Ein Angreifer gibt Daten ein, die einen Syntaxfehler verursachen, und die daraus resultierende Fehlermeldung verrät Tabellen- oder Spaltennamen sowie die Datenbankversion. Deaktivieren Sie ausführliche Fehlermeldungen in Produktionsumgebungen.
Blind SQL-Injection
Wenn keine sichtbare Ausgabe vorhanden ist, verwenden Angreifer boolesche Bedingungen:
-- If admin exists, page loads normally:
id=1 AND (SELECT COUNT(*) FROM users WHERE username='admin')=1--
-- Time-based:
id=1; IF(1=1) WAITFOR DELAY '0:0:5'--sqlmap: Automatisierte SQL-Injection
sqlmap automatisiert die Erkennung und Ausnutzung von SQL-Injection. Es kann Datenbanken auslesen, Dateien lesen und sogar Betriebssystembefehle ausführen, wenn der DB-Benutzer über ausreichende Berechtigungen verfügt.
sqlmap -u "http://target.com/page?id=1" --dbs
sqlmap -u "http://target.com/page?id=1" -D webapp -T users --dumpSQL-Injection verhindern: Parametrisierte Abfragen
Die wichtigste Abwehrmaßnahme sind parametrisierte Abfragen (Prepared Statements). Benutzereingaben werden als Parameter übergeben und niemals in die Abfragezeichenfolge verkettet:
# Python (safe):
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
# Node.js (safe):
pool.query("SELECT * FROM users WHERE id = $1", [userId])Schutz durch ORM
Die Verwendung eines ORM (SQLAlchemy, Hibernate, Sequelize) verhindert SQL-Injection normalerweise, weil Abfragen mithilfe sicherer Abstraktionen erstellt werden. Unformatierte Abfragemethoden (execute(), query()) mit String-Interpolation umgehen jedoch den Schutz des ORM.
Eingabevalidierung und WAF
Weitere Schutzmaßnahmen:
- Eingabetypen (Ganzzahlen, E-Mail-Adressen) validieren und auf eine Whitelist setzen
- Web Application Firewall (WAF) zur Erkennung von Injektionsmustern
- DB-Konten mit geringsten Rechten (kein DROP, kein UNION bei schreibgeschützten Abfragen)
- Gespeicherte Prozeduren (reduzieren die Angriffsfläche, sind aber keine vollständige Lösung)
Auswirkungen von SQL-Injection
Eine erfolgreiche SQL-Injection kann Folgendes ermöglichen: vollständiger Datenbank-Dump, Umgehung der Authentifizierung, Änderung oder Löschung von Daten, Lesen von Serverdateien (LOAD_FILE), Schreiben von Web-Shells und Ausführung von Betriebssystembefehlen über xp_cmdshell (MSSQL).
Schnelltest: SQL-Injection
Was ist die wichtigste Abwehrmaßnahme gegen SQL-Injection?
Zusammenfassung der Lektion
SQL-Injection manipuliert Datenbankabfragen über nicht bereinigte Benutzereingaben. Zu den Angriffstypen gehören klassische, blinde boolesche, zeitbasierte und UNION-basierte Angriffe. Die wichtigste Abwehrmaßnahme sind parametrisierte Abfragen — hängen Sie Benutzereingaben niemals per Konkatenation in SQL ein. Verwenden Sie ORMs mit Bedacht, setzen Sie Datenbankkonten mit den geringstmöglichen Berechtigungen ein und deaktivieren Sie ausführliche Fehlermeldungen.
Häufig gestellte Fragen
Ist die Lektion „SQL-Injection: Wie und warum sie funktioniert“ kostenlos?
Ja — der vollständige Text von „SQL-Injection: Wie und warum sie funktioniert“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „SQL-Injection: Wie und warum sie funktioniert“?
Verstehen Sie klassische, blinde und Out-of-Band-SQL-Injection und warum parametrisierte Abfragen sie verhindern. Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „SQL-Injection: Wie und warum sie funktioniert“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- SQL-Injection: Wie und warum sie funktioniert
- Cross-Site-Scripting (XSS)
- Cross-Site-Request-Forgery (CSRF)
- Fehlkonfigurationen und exponierte Dienste