Spécimen — cible et données fictives
Constat n° 3
Contrôle d’accès défaillant sur les factures
GET, PUT /api/v2/invoices/{id}
- Constat
- L’API vérifie que l’appelant est authentifié, mais pas que la facture demandée lui appartient. En changeant l’identifiant dans l’adresse, un client lit les factures de tous les autres ; la même requête en PUT les modifie.
- Preuve
GET /api/v2/invoices/10482 HTTP/1.1 Host: app.exemple.test Authorization: Bearer <jeton du compte A> HTTP/1.1 200 OK { "id": 10482, "client": "compte B", … }- Impact
- Divulgation et altération des données de facturation de l’ensemble des clients, depuis n’importe quel compte.
- Correction
- Vérifier côté serveur, à chaque requête, que la ressource appartient au compte authentifié, et centraliser ce contrôle plutôt que le répéter route par route. Des identifiants imprévisibles ne le remplacent pas.