[Mineur] Avatar sans validation du contenu ni de la taille #124
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
Total time spent: 1 hour 32 minutes
Due date
asventi
1 hour 32 minutes
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/backend#124
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é : Mineur
Rapports QA d'origine : PROFILE-08
Texte, HTML, fichier vide déclarés image/png et 17 Mo acceptés ; l'image cassée n'a pas de repli.
Détails des rapports
[PROFILE-08] Avatar : aucune validation du contenu ni de la taille (fichier texte/HTML/vide « image/png », 17 Mo acceptés) — Gravité : Mineur
PATCH /api/me/avatarfileavec : (a) texte brut nommé fake.png, content-type image/png ; (b) HTML avec content-type image/png ; (c) fichier vide ; (d) PNG aléatoire de 17 Mo ; (e) SVG contenant<script>enimage/svg+xml.INVALID_AVATAR_TYPE). Avatar cassé (image illisible) dans l'UI. Pas d'exécution de script pour le SVG : le téléchargement est servi enContent-Disposition: attachmentet uniquement via<img>(pas de XSS constaté), mais pas deX-Content-Type-Options: nosniff.files/components/UploadDropzone.tsx:11, message "File too large, 29.0 MB maximum" OK), mais accepte un fauxfake.png(texte) : l'avatar devient une image cassée affichée partout (sidebar, popup, Members) SANS repli sur le blobatar (ProfilePic.tsx:538-543, pas deonError). Côté API, > ~28,6 Mo -> 413 propre. Cache : chaque upload crée une nouvelle clé et l'ancienne est supprimée (404) : pas de souci de cache ; suppression d'avatar OK (retour au blobatar). Formats png/jpg/gif/webp OK.backend/API/Users/Me/Patch/PatchProfilePictureCommand.cs:15(ContentType.StartsWith("image")côté client).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.