Files
pointeuse-optimisator/app
Jacquin Antoine 7751255963 Ajoute un rate-limiting stateful sur /login et /login/password
Les routes d'authentification n'avaient aucune limite de débit :
- POST /login permettait le mail-bombing SMTP vers n'importe quelle adresse
  du domaine autorisé (CSRF + flood).
- POST /login/password permettait le brute-force d'un mot de passe sans
  verrou (bcrypt est lent mais pas assez pour un attaquant patient).

Ajout d'un compteur stateful en mémoire (_LOGIN_ATTEMPTS), fenêtre
glissante de 60 s, configurable via config.login_rate_limit_per_min
(défaut 10, <= 0 désactive). Clés :
- "login:<ip>" pour POST /login (limite globale par IP)
- "pw:<ip>:<email>" pour POST /login/password (limite par compte)

Au-delà du quota, la route renvoie la page login avec le message
"Trop de tentatives. Réessaie dans une minute." plutôt que d'exécuter
le workflow. La limite par (ip, email) rend le brute-force d'un compte
impossible sans rotation d'IP.

Tests : déclenchement aux limites, indépendance par email, désactivation
via config, et helper main._LOGIN_ATTEMPTS.clear() pour isoler les tests.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-07-20 00:38:57 +02:00
..
2026-07-17 23:52:41 +02:00