web-dev-qa-db-fra.com

Comment fonctionne X-CSRF-Token?

Après avoir lu cette question , si ma compréhension est correcte, le serveur envoie le jeton CSRF en aval sous forme de cookie. À première vue, cela semblerait aller à l'encontre de l'objectif du jeton puisque tous les cookies sont envoyés par le navigateur même si la demande n'est pas de la même origine.

Cependant, pour l'écrire en tant que champ personnalisé, vous devez d'abord le lire, ce que vous ne pouvez faire que si vous êtes de même origine. Ainsi, la demande prouve qu'elle provient d'un code qui a "le droit de lire" dans le pot de cookies - qui est différent du navigateur qui l'envoie en votre nom .

Mais je ne suis pas sûr d'avoir bien compris. Est-ce ainsi que cela fonctionne?

5
sashoalm

Oui c'est correct.

même politique d'origine empêche les autres domaines de lire la valeur réelle du cookie.

Dans une attaque CSRF, le navigateur envoie automatiquement des cookies. Même si l'attaquant ne peut pas lire ces cookies, il peut toujours les utiliser en envoyant une demande intersite.

Si vous avez besoin que toutes les demandes avec effets secondaires aient une valeur vérifiée envoyée en dehors du mécanisme de cookie, cela atténue CSRF car l'attaquant n'a aucun moyen de le savoir.

3
SilverlightFox

L'intention avec l'envoi d'un en-tête personnalisé tel que X-CSRF-Token ainsi qu'un cookie est que la technique, appelée double soumission, atténuera CSRF si elle est correctement mise en œuvre. La façon dont cela fonctionne est que, bien que les cookies soient automatiquement envoyés avec une demande forcée comme dans le cas de CSRF, l'en-tête personnalisé ne l'empêchera pas, vous, la victime, de ne pas être attaqué parce que le serveur recherchera les deux valeurs. La double soumission est utilisée dans les cas où l'application ne souhaite pas garder la trace de l'état d'un jeton anti-CSRF.

4
h4ckNinja