Security: API Rate Limiting für alle Endpoints implementieren #66

Open
opened 2026-03-30 20:18:02 +00:00 by David · 0 comments
Collaborator

Beschreibung

Kein API-Endpoint hat Rate Limiting. Der Login-Endpoint kann per Brute-Force angegriffen werden, und alle anderen Endpoints sind anfällig für DoS durch Massenanfragen.

Hintergrund

Ohne Rate Limiting kann ein einzelner Client unbegrenzt Anfragen senden. Besonders kritisch beim Login-Endpoint (Passwort-Bruteforce) und bei Pipeline-Triggern (Ressourcenerschöpfung).

Akzeptanzkriterien

  • Login-Endpoint: Max 5 fehlgeschlagene Versuche pro IP pro 15 Minuten
  • API-Endpoints: Max 100 Requests/Minute pro authentifiziertem User
  • Pipeline-Trigger: Max 10 Starts/Minute
  • HTTP 429 Response mit Retry-After Header bei Überschreitung
  • Rate Limits konfigurierbar via Settings

Technische Hinweise

  • Betroffene Dateien: backend/main.py, backend/api/auth.py, alle API-Router
  • Ansatz: slowapi Library (FastAPI-kompatibel) oder eigene Middleware mit Redis/In-Memory Store
  • Migration nötig: nein

Aufwand: M

## Beschreibung Kein API-Endpoint hat Rate Limiting. Der Login-Endpoint kann per Brute-Force angegriffen werden, und alle anderen Endpoints sind anfällig für DoS durch Massenanfragen. ## Hintergrund Ohne Rate Limiting kann ein einzelner Client unbegrenzt Anfragen senden. Besonders kritisch beim Login-Endpoint (Passwort-Bruteforce) und bei Pipeline-Triggern (Ressourcenerschöpfung). ## Akzeptanzkriterien - [ ] Login-Endpoint: Max 5 fehlgeschlagene Versuche pro IP pro 15 Minuten - [ ] API-Endpoints: Max 100 Requests/Minute pro authentifiziertem User - [ ] Pipeline-Trigger: Max 10 Starts/Minute - [ ] HTTP 429 Response mit `Retry-After` Header bei Überschreitung - [ ] Rate Limits konfigurierbar via Settings ## Technische Hinweise - Betroffene Dateien: `backend/main.py`, `backend/api/auth.py`, alle API-Router - Ansatz: `slowapi` Library (FastAPI-kompatibel) oder eigene Middleware mit Redis/In-Memory Store - Migration nötig: nein ## Aufwand: M
Sign in to join this conversation.
No description provided.