Einfaches In-Memory-Rate-Limit pro IP (5/min) oder slowapi.
## Probleme
**a) Timing-Attack auf Passwort-Vergleich** — `server.py:85`
```python
if payload.get("password") != APP_PASSWORD:
```
String-`!=` ist nicht zeitkonstant.
**b) Kein Rate-Limit auf `/login`** — `server.py:81-89`
Unbegrenzte Versuche moeglich. Kurze Passwoerter (aktuell 3 Zeichen) in Sekunden brute-forceable.
## Fix
```python
import secrets
if not secrets.compare_digest(payload.get("password", ""), APP_PASSWORD):
...
```
Einfaches In-Memory-Rate-Limit pro IP (5/min) oder slowapi.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Probleme
a) Timing-Attack auf Passwort-Vergleich —
server.py:85String-
!=ist nicht zeitkonstant.b) Kein Rate-Limit auf
/login—server.py:81-89Unbegrenzte Versuche moeglich. Kurze Passwoerter (aktuell 3 Zeichen) in Sekunden brute-forceable.
Fix
Einfaches In-Memory-Rate-Limit pro IP (5/min) oder slowapi.
Fix umgesetzt in
server.py:secrets.compare_digest()fuer Passwort-VergleichManueller Test: 5 falsche Versuche -> 6. Versuch liefert 429.