Je suis en train de créer un service Web qui utilise exclusivement JSON pour le contenu de ses requêtes et de ses réponses (c'est-à-dire qu'il n'y a pas de charges utiles codées par formulaire).
Un service web est-il vulnérable à une attaque CSRF si les conditions suivantes sont réunies ?
-
Tout
POST
sans objet JSON de premier niveau, par exemple,{"foo":"bar"}
sera rejeté avec un 400. Par exemple, unPOST
avec le contenu42
serait ainsi rejetée. -
Tout
POST
avec un type de contenu autre queapplication/json
sera rejeté avec un 400. Par exemple, unPOST
demande avec content-typeapplication/x-www-form-urlencoded
serait ainsi rejetée. -
Toutes les demandes GET seront Sécurité et ne modifie donc aucune donnée côté serveur.
-
Les clients sont authentifiés via un cookie de session, que le service web leur donne après qu'ils aient fourni un couple nom d'utilisateur/mot de passe correct via un POST avec des données JSON, par ex.
{"username":"user@example.com", "password":"my password"}
.
Question annexe : Est-ce que PUT
y DELETE
ne sont-elles jamais vulnérables au CSRF ? Je pose la question parce qu'il semble que la plupart (tous ?) des navigateurs interdisent ces méthodes dans les formulaires HTML.
EDIT : Ajouté le point #4.
EDIT : Beaucoup de bons commentaires et de bonnes réponses jusqu'à présent, mais personne n'a proposé une attaque CSRF spécifique à laquelle ce service web est vulnérable.