Documentation · Chapitre 08

Faire de la sécurité
un test reproductible.

Cet atelier attaque volontairement reading-list en local pour confirmer que chaque couche répond comme prévu.

Nous sécurisons reading-list par couches, sans prétendre qu’une seule option suffit.

1 — Entrée et sortie

Soumettez un titre vide, puis un titre contenant <script>alert(1)</script>. Le premier doit produire 422 avec une erreur de champ. Le second peut être conservé comme texte, mais ne doit jamais exécuter de script dans la liste.

2 — CSRF

Retirez temporairement csrfField() d’une copie locale du formulaire et envoyez un POST. Attendez 419. Remettez immédiatement le champ : un test de sécurité ne doit pas devenir une régression.

3 — Cookies et en-têtes

phpaml — zsh
curl -I http://127.0.0.1:8910/books

Repérez Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy et Permissions-Policy. Secure et HSTS apparaissent lorsque la requête est réellement HTTPS.

4 — Limitation

Dans un environnement de test uniquement, réduisez limit à 2, envoyez trois POST valides vers le même chemin et confirmez 429 avec Retry-After. Restaurez ensuite 60.

5 — Production

phpaml — zsh
aml test
aml doctor --production
APP_DEBUGfalse
APP_URLhttps://…
APP_KEY32 caractères ou plus
public/seule racine Web

EN RÉSUMÉ

Ce qu’il faut retenir

  • Valider et échapper protègent deux étapes différentes.
  • CSRF protège les actions utilisant la session.
  • Les cookies de session sont HttpOnly et deviennent Secure sous HTTPS.
  • La CSP et les autres en-têtes fixent des limites au navigateur.
  • La limitation réduit l’abus mais ne remplace jamais les permissions.