Partie 8 — CSRF, SSRF & CORS
⏱️ TL;DR — Cette partie regroupe les attaques qui détournent des requêtes. Le CSRF force le navigateur d’une victime authentifiée à envoyer une requête à son insu (exploitant l’envoi automatique des cookies — Partie 2) : parade par jetons anti-CSRF +
SameSite+ vérification de l’Origin. Le SSRF force le serveur à requêter une URL choisie par l’attaquant (services internes, métadonnées cloud169.254.169.254) : parade par allow-list stricte des destinations. Le clickjacking piège l’utilisateur via une iframe invisible (parade :frame-ancestors). L’open redirect abuse une redirection non validée. Enfin, CORS — souvent mal compris — est un assouplissement de la Same-Origin Policy à configurer avec soin (jamais*+ credentials).
Le problème qu’on résout
Après les injections (le serveur exécute une entrée) et le XSS (le navigateur exécute une entrée), voici la troisième grande famille : les attaques qui n’injectent pas de code mais abusent la confiance entre les parties. Le CSRF abuse la confiance du serveur envers le navigateur de la victime ; le SSRF abuse la confiance du réseau interne envers le serveur ; le clickjacking abuse la confiance de l’utilisateur envers ce qu’il voit ; une mauvaise config CORS abuse la confiance d’une origine envers une autre.
Ces attaques sont particulièrement traîtres car chaque requête, prise isolément, paraît légitime — c’est le contexte (qui l’a déclenchée, vers où, à l’insu de qui) qui la rend malveillante. Cette partie t’apprend à vérifier ce contexte.
Ce que tu sauras faire à la fin de cette partie
- Comprendre le CSRF (mécanisme via cookies auto-envoyés) et le fermer (jetons,
SameSite,Origin). - Comprendre le SSRF et son danger cloud (métadonnées), et le contrer par allow-list de destinations.
- Empêcher le clickjacking (
frame-ancestors/X-Frame-Options) et l’open redirect (valider les cibles). - Configurer CORS correctement, sans ouvrir de brèche (
*+ credentials interdit).
Les chapitres
| # | Chapitre | En un mot |
|---|---|---|
| 8.1 | CSRF & défenses | Requête forcée au nom de la victime ; jetons, SameSite, Origin. |
| 8.2 | SSRF côté serveur | Le serveur requête pour l’attaquant ; métadonnées cloud, allow-list. |
| 8.3 | Clickjacking & open redirect | Iframe piège, redirection détournée. |
| 8.4 | CORS bien configuré | Assouplir la SOP sans se percer ; erreurs classiques. |
Ces attaques closent le tour des grandes familles génériques. On applique ensuite tout le cours à ton stack concret : la Partie 9 — Sécurité PHP & Symfony.
On commence par l’attaque qui abuse tes cookies : CSRF & défenses.