SQL-Injection
SQL-Injection ist eine der häufigsten Sicherheitslücken in Webanwendungen
und entsteht durch unsichere Verarbeitung von Benutzereingaben.
Definition
SQL-Injection ist ein Angriff, bei dem schädlicher SQL-Code in eine
Datenbankabfrage eingeschleust wird, um unbefugt auf Daten zuzugreifen,
sie zu verändern oder zu löschen.
Wie entsteht das Problem?
Die Anwendung übernimmt Benutzereingaben direkt in SQL-Abfragen,
ohne sie zu prüfen oder zu filtern.
Beispiel (unsicher)
SELECT * FROM users WHERE username = 'admin' AND password = '1234';
Ein Angreifer gibt als Passwort z. B. ein:
' OR '1'='1
Dadurch wird die Abfrage manipuliert zu:
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Ergebnis: Die Bedingung ist immer wahr → unbefugter Zugriff.
Folgen einer SQL-Injection
- Unbefugter Zugriff auf Datenbanken
- Auslesen sensibler Daten (Passwörter, Kundendaten)
- Manipulation oder Löschen von Daten
- Komplette Übernahme der Anwendung möglich
Schutzmaßnahmen
- Prepared Statements / Parametrisierte Abfragen
- Validierung von Benutzereingaben
- Least Privilege (geringe Datenbankrechte)
- Input-Filtering und Escape-Funktionen
Merksatz für die FISI-Prüfung:
SQL-Injection = Manipulation von Datenbankabfragen durch unsichere Benutzereingaben.
Typische Prüfungsantwort
SQL-Injection ist eine Sicherheitslücke, bei der ein Angreifer schädlichen SQL-Code
in eine Datenbankabfrage einschleust. Dadurch können Daten ausgelesen, verändert
oder gelöscht werden. Ursache ist meist die unsichere Verarbeitung von Benutzereingaben.
```