Files
live-campus-mcs-p-2027.2/Semaine_11/Jour_04/Exercice 5.2 - Cloisonner.md
T
gauvainboiche 0d071d2843 Semaine 11
2026-07-11 21:38:00 +02:00

22 lines
1.0 KiB
Markdown

## Exercice 2 — Cloisonner l'accès aux objets / BOLA (API1)
**Risque OWASP :** API1 Broken Object Level Authorization.
**Contexte :** tout utilisateur authentifié peut lire/modifier **n'importe quel** équipement via son ID.
**Consignes :**
1. Ajoutez au modèle `Equipement` un champ `proprietaire` (clé étrangère vers `User`) ;
proprietaire = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="equipements")
migrez.
2. Dans l'`EquipementViewSet`, surchargez `get_queryset()` pour ne renvoyer que les équipements du `request.user`.
3. Faites en sorte que la création affecte automatiquement le propriétaire (`perform_create`).
4. Ajoutez une permission au niveau **objet** (`has_object_permission`) qui vérifie l'appartenance.
5. Vérifiez : l'utilisateur A ne peut pas accéder (404/403) à l'équipement de l'utilisateur B.
**Critères :** cloisonnement effectif par propriétaire (queryset + permission objet), démonstration A/B.