Token CSRF
Qu'est-ce que Token CSRF ?
Token CSRFValeur imprévisible et propre à la session, intégrée aux formulaires ou aux en-têtes, permettant au serveur de confirmer que les requêtes modifiant l'état proviennent de ses propres pages.
Un token CSRF est la défense canonique contre le Cross-Site Request Forgery, l'attaque classée A05 dans l'OWASP Top 10 2013 et intégrée à « Broken Access Control » dans les éditions ultérieures. Le serveur génère une valeur cryptographiquement aléatoire, la lie à la session de l'utilisateur et l'intègre dans les formulaires HTML ou l'expose pour un en-tête de requête personnalisé. Comme la same-origin policy empêche la page de l'attaquant de lire le token, une requête inter-site falsifiée ne peut pas fournir la bonne valeur et se voit rejetée.
Trois patrons dominent. Le synchronizer token pattern stocke la valeur attendue côté serveur — le plus robuste, mais avec état. Les double-submit cookies comparent un cookie à un champ de formulaire ou un en-tête correspondant, sans nécessiter d'état côté serveur, mais restent vulnérables si un attaquant peut écrire des cookies via un sous-domaine. Le double-submit signé (HMAC) lie le token à la session pour combler cette faille. Les tokens doivent être propres à la session (ou à la requête pour les actions sensibles), longs et comparés en temps constant.
La défense en profondeur compte : depuis Chrome 80 (février 2020), les cookies non marqués prennent par défaut la valeur SameSite=Lax, ce qui bloque la plupart des POST inter-sites, mais Lax autorise encore les navigations GET de premier niveau et tous les navigateurs ne l'imposent pas — les tokens restent donc nécessaires. Associez-les à la vérification d'Origin/Referer et à un CORS strict. Les API à bearer token appelées uniquement depuis JavaScript évitent les cookies ambiants et n'ont généralement pas besoin de token CSRF, mais elles requièrent tout de même des contrôles anti-rejeu et d'autorisation.
flowchart TD
A[Utilisateur charge le formulaire] --> B[Serveur émet un token CSRF lié à la session]
B --> C[Token en champ caché / en-tête personnalisé]
C --> D[Utilisateur envoie une requête modifiant l'état]
D --> E{Token correspond à la session ?}
E -- Oui --> F[Traiter la requête]
E -- Non / absent --> G[Rejeter 403 - requête falsifiée]
H[Formulaire inter-site de l'attaquant] -. ne peut lire le token .-> G● Exemples
- 01
Champ <input type="hidden" name="csrf" value="a8f1..."> caché dans un formulaire.
- 02
En-tête X-CSRF-Token validé côté serveur contre un secret propre à la session.
● Questions fréquentes
Qu'est-ce que Token CSRF ?
Valeur imprévisible et propre à la session, intégrée aux formulaires ou aux en-têtes, permettant au serveur de confirmer que les requêtes modifiant l'état proviennent de ses propres pages. Cette notion relève de la catégorie Identité et accès en cybersécurité.
Que signifie Token CSRF ?
Valeur imprévisible et propre à la session, intégrée aux formulaires ou aux en-têtes, permettant au serveur de confirmer que les requêtes modifiant l'état proviennent de ses propres pages.
Comment se défendre contre Token CSRF ?
Les défenses contre Token CSRF combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.