HRT-63 — Blacklist + validation complexité mots de passe #7

Closed
admin wants to merge 0 commits from feature/HRT-63-password-blacklist-complexity into master
Owner

Contexte

Fix sécurité [HRT-56] — Le endpoint /api/v1/auth/register acceptait des mots de passe triviaux (password, 12345678).

Changements

saas_auth.py

  • Ajout constante WEAK_PASSWORDS (50+ mots de passe communs)
  • Ajout fonction validate_password_strength(password) : vérifie longueur min 8, blacklist, présence ≥1 chiffre, présence ≥1 lettre
  • /register : remplace len(password) < 8 par appel validate_password_strength()
  • /change-password : idem

tests/security/test_security.py

  • Ajout classe TestWeakPasswordRejection : 10 cas paramétrés mots faibles → 400, mot de passe fort Tr0ub4d@ur! → 201, sans chiffre → 400, sans lettre → 400

Vérifications

  • Syntaxe Python OK (ast.parse)
  • Service NON redémarré — attente validation CTO

Ticket: HRT-63

## Contexte Fix sécurité [HRT-56] — Le endpoint `/api/v1/auth/register` acceptait des mots de passe triviaux (`password`, `12345678`). ## Changements ### `saas_auth.py` - Ajout constante `WEAK_PASSWORDS` (50+ mots de passe communs) - Ajout fonction `validate_password_strength(password)` : vérifie longueur min 8, blacklist, présence ≥1 chiffre, présence ≥1 lettre - `/register` : remplace `len(password) < 8` par appel `validate_password_strength()` - `/change-password` : idem ### `tests/security/test_security.py` - Ajout classe `TestWeakPasswordRejection` : 10 cas paramétrés mots faibles → 400, mot de passe fort `Tr0ub4d@ur!` → 201, sans chiffre → 400, sans lettre → 400 ## Vérifications - Syntaxe Python OK (`ast.parse`) - Service NON redémarré — attente validation CTO Ticket: HRT-63
admin added 1 commit 2026-04-27 15:03:45 +02:00
- Add WEAK_PASSWORDS set (50+ common passwords) in saas_auth.py
- Add validate_password_strength() function: checks min length, blacklist, digits, letters
- Replace raw len() checks in /register and /change-password with validate_password_strength()
- Add TestWeakPasswordRejection class in test_security.py: parametrized weak pwd test, strong pwd 201 test, no-digit, no-letter tests

Co-Authored-By: Paperclip <noreply@paperclip.ing>
admin added 2 commits 2026-04-27 15:54:02 +02:00
Co-Authored-By: Paperclip <noreply@paperclip.ing>
abc12345 n'est pas dans WEAK_PASSWORDS de saas_auth.py et satisfait
les règles de complexité → test échouait (attendait 400, obtenait 201).
abc1234 est explicitement dans la blacklist (ligne 84 de saas_auth.py).

Correction demandée par CTO en review PR #7 (HRT-63).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
admin closed this pull request 2026-04-27 16:18:04 +02:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/turf_saas#7