Übung: SQL-Injection in der Item-Suche #2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Übung: SQL-Injection in der Item-Suche
Branch:
exercise/sql-injection· Schwierigkeit: mittel ·Thema: Security (Python)
Ausgangslage
Ein neues Feature ergänzt eine Suche über die eigenen Items:
GET /api/v1/items/search?q=…inbackend/app/api/routes/items.py.Es gibt sogar einen neuen Test (
test_search_items) — und der ist grün.Trotzdem hat die Umsetzung ein gravierendes Security-Problem.
Aufgabe
exercise/sql-injectionaufmainöffnen.Hinweis: Raw-SQL, Nutzereingabe, f-String.
qformulieren, der Items aller Nutzer liefert(z. B.
' OR 1=1 --). Was bedeutet das zusätzlich für dieBerechtigungsprüfung?
(
select(Item).where(Item.owner_id == current_user.id, col(Item.title).ilike(f"%{q}%"))) — oder gebundene Parameter(
text(...).bindparams(...)).keine fremden Items zurückkommen.
Freigabe durch den Trainer.
Erwartetes Learning