L’analogie du ticket assorti
À l’ouverture du formulaire, le serveur donne un ticket secret à la session. Au retour, le formulaire doit présenter exactement le même ticket. Un autre site peut provoquer une requête, mais ne connaît pas ce jeton.
Ajoutez le champ à chaque formulaire d’écriture
<form method="post" action="/books">
<?= $view->csrfField() ?>
<!-- champs -->
<button type="submit">Enregistrer</button>
</form>Le middleware accepte _token dans le formulaire ou X-CSRF-Token dans l’en-tête. Sans correspondance sûre via hash_equals(), il retourne 419 et renouvelle l’en-tête du jeton.
Quelles requêtes sont contrôlées ?
GET / HEAD / OPTIONSlecture : pas de contrôle CSRF
POST / PUT / PATCH / DELETEmodification : jeton requis
Authorization: Bearer …authentification par jeton, pas par cookie
Préfixes API configurésexclus du middleware Web
CSRF ne remplace pas l’autorisation
Un jeton valide prouve l’origine du formulaire, pas le droit de supprimer un livre. Vérifiez aussi l’identité et les permissions.