AP2Lernhub
Mittel

SQL Injection & Gegenmaßnahmen

Wie Angriffe funktionieren und wie man sie mit Prepared Statements verhindert.

Warum Priorität „Mittel"? Gelegentlich Teil der Prüfung (40–59%). Verstehen, aber nicht überinvestieren.

Lernziele

  • Angriffsmuster von SQL-Injection erkennen (Tautologie, UNION, Blind)
  • Prepared Statements als Hauptgegenmaßnahme sicher anwenden
  • Weitere Maßnahmen (Input-Validierung, Least Privilege) einordnen

Klassische Angriffsmuster

  • Tautologie: ' OR '1'='1 umgeht die WHERE-Bedingung.
  • UNION-based: UNION SELECT ... hängt fremde Daten an das Ergebnis an.
  • Blind (zeitbasiert): SLEEP(5) verrät Erfolg über die Antwortzeit.
  • Fehlerbasiert: provozierte DB-Fehler leaken Schemadetails.

Unsicher vs. sicher

javaUNSICHER – String-Konkatenation
String sql = "SELECT * FROM user WHERE name='" + name + "'";
stmt.executeQuery(sql);
javaSICHER – Prepared Statement
PreparedStatement ps = con.prepareStatement(
    "SELECT * FROM user WHERE name = ?");
ps.setString(1, name);
ps.executeQuery();

Gegenmaßnahmen (Reihenfolge nach Wirksamkeit)

  1. Prepared Statements / Parameter-Binding – trennt SQL-Code und Daten.
  2. ORM (Hibernate, Entity Framework) nutzt intern Prepared Statements.
  3. Input-Validierung (Whitelist) – ergänzend, nicht ersetzend.
  4. Least Privilege für den DB-User der Anwendung.
  5. WAF (Web Application Firewall) als zusätzliche Schicht.
  6. Keine Fehlerdetails an den Client ausgeben.

Übungen

Eine AntwortWelche Maßnahme schützt am wirksamsten gegen SQL-Injection?

Eine AntwortWas bewirkt «' OR '1'='1» in einem Login-Query ohne Schutz?

Zum Weiterlernen

Externe Inhalte – AP2 Lernhub ist nicht für die Verfügbarkeit oder Korrektheit der verlinkten Seiten verantwortlich.

Verwandte Themen