Contexte#
« Lecture seule » dans un client généré ou dans OpenAPI n'est pas un contrôle côté serveur. Si le DTO UserUpdate dans le code inclut toujours createdAt ou creditScore dans l'ensemble lié, un appel d'API direct peut les définir.
Théorie#
Identique au mass assignment avec un champ documenté comme immuable. La preuve offensive est un seul PATCH avec la clé supposée en lecture seule.
Pratique#
Envoyer des champs documentés en lecture seule sur la route d'écriture#
- En laboratoire, ajoutez
id,createdAtou unreadOnlyFlagde la réponseGETdans un corpsPATCHet voyez si le serveur accepte l'écriture et la reflète dans leGET.
Outils#
- curl
- Burp Suite