Sicherheits-Review 25.08.2026 vor geplanter öffentlicher Erreichbarkeit
über Pangolin (bisher nur Pangolin-interne Auth vorgeschaltet):
- auth.py: In-Memory-Rate-Limiting auf /login (je Email UND je Quell-IP,
8 Fehlversuche / 10 Minuten), UserManager.validate_password() setzt
jetzt eine Mindestlänge von 12 Zeichen durch (fastapi_users' Default
war ein No-Op, ließ auch leere Passwörter zu).
- routers/admin_kunden.py, routers/organisation.py: fangen
InvalidPasswordException/UserAlreadyExists jetzt sauber ab statt 500.
- app.py: /docs, /redoc, /openapi.json deaktiviert (legten zuvor die
komplette Routenstruktur inkl. /admin/* offen), Security-Header-
Middleware (X-Content-Type-Options, X-Frame-Options, Referrer-Policy,
CSP).
- scripts/reset_password.py: neues Skript, Gegenstück zu create_user.py,
für die im selben Review gefundenen aktiven Testaccounts mit dem
Passwort 'test123' (einer davon Superuser) gebraucht.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>