[Majeur] Mots de passe sans politique côté API (1 caractère ou vide accepté) et sans révocation des sessions #113
Labels
No labels
bug
enhancement
feature
groupe/chat-data
groupe/friends-blocking
groupe/input-validation
groupe/realtime-presence
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/backend#113
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité : Majeur
Rapports QA d'origine : AUTH-05, AUTH-17, ADMIN-08, PROFILE-06
La règle des 8 caractères n'existe que dans l'UI ; le reset admin accepte
""; les sessions existantes ne sont pas révoquées. Voir aussi #69.Détails des rapports
[AUTH-05] Le serveur accepte des mots de passe de 1 caractère et des usernames/valeurs sans règle (validation seulement côté UI) — Gravité : Mineur
POST /api/auth/registera-> 201 ; password12345678-> 201 ; usernamea,qa_auth_<img src=x onerror=alert(1)>,qa_auth_'; DROP TABLE Users;--,qa_auth_RTL(override RTL), tabulation, 255 caractères -> 201. L'UI impose pourtant mot de passe >= 8 (AuthForm.tsx:137) et username <= 25 (AuthForm.tsx:94), emaila b@qa.test,<script>@qa.test,a@bacceptés (validateur [EmailAddress] .NET très permissif).backend/API/Auth/Register/RegisterEndpoint.cs:7-18(seulementLength(1,255)).[AUTH-17] Réinitialisation de mot de passe sans politique ni révocation des sessions — Gravité : Mineur
PATCH /api/auth/{id}/password(body JSON string)""-> 200 (le user ne peut plus se connecter carPasswordest requis au login),"a"-> 200, 300 caractères -> 200, 100 000 caractères -> 200 (alors que l'inscription limite à 1-255 et l'UI à 8+). Les sessions existantes du user (access 10 min + refresh) restent valides après le reset :/me200 et/auth/refresh200 avec l'ancienne session (le logout est commenté dansResetPasswordEndpoint.cs:21-25).ResetPasswordEndpoint.cs:13-27,ResetPasswordQuery.cs:27.[ADMIN-08] Réinitialisation de mot de passe : l'API accepte un mot de passe vide ou d'1 caractère — Gravité : Majeur
PATCH /api/auth/{id}/password"","a","short"(l'UI impose min 8, l'API aucune validation). Un mot de passe vide peut donc être posé sur un compte.backend/API/Auth/Reset/ResetPasswordEndpoint.cs:13:[FromBody] string passwordsans validation ;ResetPasswordQuery.cs.[PROFILE-06] Mot de passe : aucune longueur minimale côté API (1 caractère accepté), l'UI exige 8 — Gravité : Mineur
PATCH /api/me/password(et register :[Length(1,255)])PATCH /api/me/password {"password":<actuel>,"newPassword":"1"}.Profile.tsx:141).backend/API/Users/Me/Update/UpdateMePassEndpoint.cs:9-13(seulement[Required]).Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.