Übung: SQL-Injection in der Owner-Suche #2

Open
opened 2026-11-02 11:37:54 +00:00 by trainer · 0 comments
Owner

Übung: SQL-Injection in der Owner-Suche

Branch: exercise/sql-injection · Schwierigkeit: mittel ·
Thema: Security

Ausgangslage

Ein neues Feature ergänzt eine Freitext-Suche über Owner:
GET /owners/search?q=…. Die Implementierung steht in
OwnerSearchService (JdbcTemplate) plus einem neuen Endpunkt im
OwnerController. Das Feature funktioniert — aber die Umsetzung hat
ein gravierendes Security-Problem.

Aufgabe

  1. PR von exercise/sql-injection auf main öffnen.
  2. Die Problemstelle finden und einkategorisieren
    (OWASP: Injection). Hinweis: native Query, Nutzereingabe,
    String-Konkatenation.
  3. Konkreten Exploit-Satz für q formulieren, der z. B. alle Owner
    ohne Bedingung liefert (…' OR '1'='1).
  4. Fix vorschlagen: parametrisierte Query (PreparedStatement /
    JdbcTemplate mit ?-Platzhaltern).
  5. Review-Agenten laufen lassen, Findings abarbeiten, PR fertig
    reviewen. Merge erst nach Freigabe durch den Trainer.

Erwartetes Learning

  • Warum String-Konkatenation in SQL gefährlich ist (und warum
    „HTML-escaping" hier nicht reicht)
  • Wie ein Security-Review-Agent Finding → Fix → Verifikation
    begleitet
  • PR-Flow im Labor: Issue → Branch → PR → Review → Merge
# Übung: SQL-Injection in der Owner-Suche **Branch:** `exercise/sql-injection` · **Schwierigkeit:** mittel · **Thema:** Security ## Ausgangslage Ein neues Feature ergänzt eine Freitext-Suche über Owner: `GET /owners/search?q=…`. Die Implementierung steht in `OwnerSearchService` (JdbcTemplate) plus einem neuen Endpunkt im `OwnerController`. Das Feature funktioniert — aber die Umsetzung hat ein gravierendes Security-Problem. ## Aufgabe 1. PR von `exercise/sql-injection` auf `main` öffnen. 2. Die Problemstelle finden und einkategorisieren (OWASP: *Injection*). Hinweis: native Query, Nutzereingabe, String-Konkatenation. 3. Konkreten Exploit-Satz für `q` formulieren, der z. B. alle Owner ohne Bedingung liefert (`…' OR '1'='1`). 4. Fix vorschlagen: parametrisierte Query (PreparedStatement / `JdbcTemplate` mit `?`-Platzhaltern). 5. Review-Agenten laufen lassen, Findings abarbeiten, PR fertig reviewen. Merge erst nach Freigabe durch den Trainer. ## Erwartetes Learning - Warum String-Konkatenation in SQL gefährlich ist (und warum „HTML-escaping" hier nicht reicht) - Wie ein Security-Review-Agent Finding → Fix → Verifikation begleitet - PR-Flow im Labor: Issue → Branch → PR → Review → Merge
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
lab/spring-petclinic#2
No description provided.