CSRF : empêcher une autre page d’agir à votre place
Une attaque CSRF tente de faire envoyer à votre navigateur une action que vous n’avez pas décidée. PHPAML associe un jeton secret à votre session. Le formulaire l’envoie et le middleware vérifie qu’il correspond avant de laisser passer POST.
<form method="post" action="/books">
<?= $view->csrfField() ?>
<!-- champs -->
</form>Dans une application classique actuelle, CsrfMiddleware est ajouté automatiquement. Un jeton absent ou incorrect reçoit 419. Ne désactivez pas cette protection pour corriger un formulaire : ajoutez le champ attendu.
Validation et échappement résolvent deux problèmes différents
Décide si une valeur est acceptable pour votre application : longueur, type, présence, format.
Empêche une valeur affichée d’être interprétée comme une balise ou un script HTML.
<?= $view->escape($book['title']) ?>Les protections déjà actives
Vérifie les requêtes qui modifient.
Freine les envois répétés sur POST, PUT, PATCH et DELETE.
Durcissent le comportement du navigateur.
Response refuse les destinations externes ou mal formées.
Test de sécurité simple
- Soumettez normalement le formulaire : il doit réussir.
- Inspectez la page et retirez temporairement le champ _token.
- Soumettez de nouveau : PHPAML doit répondre 419.
- Rétablissez csrfField() et vérifiez le succès.
Un jeton CSRF est une valeur de sécurité liée à la session. Ne l’affichez pas dans une erreur publique et ne le copiez pas dans un rapport.