Les attributs de cookies Secure, HttpOnly et SameSite
Les cookies de session sont une cible de choix. Trois attributs — Secure, HttpOnly et SameSite — déterminent si un attaquant peut les voler ou en abuser. Des attributs manquants mènent directement au vol de session et au CSRF.
Ce que c’est
Secure n’envoie le cookie qu’en HTTPS. HttpOnly le cache à JavaScript (document.cookie). SameSite contrôle s’il est envoyé lors des requêtes cross-site.
Ensemble, ils réduisent la surface d’attaque : un attaquant ne peut pas lire le cookie via un script injecté, ne peut pas l’intercepter en HTTP, et ne peut pas s’en servir depuis un autre site.
Pourquoi ça compte
Sans HttpOnly, le moindre bug de XSS peut lire le cookie de session et offrir à l’attaquant une session connectée. Sans Secure, le cookie fuite lors de la moindre requête en HTTP simple.
Sans SameSite, le navigateur attache le cookie aux requêtes cross-site, le mécanisme même dont dépendent les attaques CSRF.
Comment corriger
La plupart des frameworks les exposent comme options au moment où vous définissez le cookie.
res.cookie("session", token, {
secure: true,
httpOnly: true,
sameSite: "lax", // or "strict" for maximum protection
path: "/",
});Nommer un cookie __Host- oblige le navigateur à exiger Secure, Path=/ et pas de Domain — une base solide et auto-appliquée pour les cookies de session.
Si vous avez réellement besoin de cookies cross-site, SameSite=None n’est respecté que si Secure est aussi défini ; sinon, les navigateurs modernes rejettent le cookie.
FAQ
Lax ou Strict pour SameSite ?
Lax est une valeur par défaut sûre qui autorise quand même les navigations de premier niveau. Strict est plus restrictif, mais peut casser les parcours où les utilisateurs arrivent depuis des liens externes en s’attendant à être connectés.
Ces attributs arrêtent-ils le XSS ?
HttpOnly limite les dégâts du XSS en cachant le cookie, mais il n’empêche pas le XSS. Associez-le à une solide Content-Security-Policy.
Votre app est-elle concernée ?
AppSafe détecte ce problème et des dizaines d’autres en un seul scan gratuit.
Scanner mon app gratuitementGuides liés
Content-Security-Policy (CSP) : ce que c’est et comment en ajouter une
L’en-tête qui empêche les scripts injectés de s’exécuter.
CORS mal configuré : les pièges du joker et du reflet
Autorisez toutes les origines et n’importe quel site peut lire votre API.
Pourquoi votre site a besoin d’une redirection HTTP→HTTPS
Ne laissez pas la porte non sécurisée ouverte.