Contrôle des en-têtes de sécurité

Collez les en-têtes de réponse d’une page —curl -sI https://your-site.example/dans un terminal, ou le bloc du panneau Réseau du navigateur — puis obtenez uneNote de A+ à Fsur la liste de contrôle OWASP Secure Headers :Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, protection contre l’encadrement,Referrer-Policy, Permissions-Policy, le trio d’isolation inter-origines, les fuites de version, les en-têtes obsolètes et les attributs de cookies — chaque constat associé aunginx, Apache et Expresslignes qui la corrigent. Tout s’exécute dans votre navigateur ; la page ne contacte jamais votre site.
La ligne d’état est facultative. Toutes les lignes Set-Cookie multiples sont vérifiées. Pour disposer d’une politique à noter, construisez-en une avec le générateur CSP ; pour décomposer un bloc d’en-têtes ligne par ligne, utilisez l’analyseur d’en-têtes HTTP.
Aucune note pour l’instant. Collez les en-têtes de réponse et appuyez sur Vérifier les en-têtes, ou chargez un exemple.
Les lignes de correction pour chaque constat apparaissent ici après une vérification.
Périmètre de ce contrôle par rapport au Contrôle de sécurité SSL. Cette page note les en-têtes de réponse de sécurité (la liste OWASP ci-dessus). Le Contrôle de sécurité SSL note votre configuration HTTPS : chaîne de certificats, versions de protocole, robustesse des chiffrements et contenu mixte. HSTS et les attributs des cookies apparaissent sur les deux pages parce que les deux listes les incluent, mais sous des angles différents — lancez les deux contrôles pour avoir la vue complète.
Autotest
Relance le correcteur sur des blocs d’en-têtes fixes : l’exemple bon en A+, l’exemple mauvais en F avec toutes les pénalités déclenchées, chaque règle isolément (l’arithmétique du score), le plafonnement des fuites de version, les avis sur les cookies, les remarques sur la qualité de CSP, frame-ancestors comptant comme protection contre l’encadrement, les seuils de note de chaque côté de chaque limite, les extraits de correction, et les cas négatifs. Rien n’est envoyé nulle part.
Que sont les en-têtes de sécurité ?
En une phrase : les en-têtes de sécurité sont des en-têtes de réponse qui demandent au navigateur d’appliquer une protection qu’il ne pourrait pas déduire seul — ne jamais charger de scripts depuis des origines inconnues, ne plus jamais parler HTTP en clair avec cet hôte, ne jamais afficher cette page dans un cadre — et chacun ne coûte qu’une ligne de configuration.
Les en-têtes que cette page note
En-têteProtège contreValeur recommandée par l’OWASP
Strict-Transport-Securityrétrogradation de protocole et vol de cookies lors de la première requête en HTTP clairmax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, intégrations malveillantes, contenu mixtedefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionsconfusion MIME (un script servi comme image)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (votre page encadrée par un attaquant)deny / 'none'
Referrer-Policyfuite des URL (avec jetons) vers des sites tiersno-referrer
Permissions-Policypages et intégrations utilisant en silence la caméra, le micro, la géolocalisationtoutes les fonctionnalités désactivées
Cross-Origin-Opener-Policyd’autres fenêtres accédant à votre contexte de navigationsame-origin
Cross-Origin-Embedder-Policychargement de ressources qui n’ont pas donné leur accord (permet l’isolation des processus)require-corp
Cross-Origin-Resource-Policyvos ressources intégrées par d’autres sitessame-origin
Comment la note est calculée

Partez de 100 et soustrayez : −25 si CSP manque, −20 si HSTS manque, −10 chacun pour X-Content-Type-Options, Referrer-Policy ou toute protection contre l’encadrement manquants, −5 chacun pour le trio inter-origines et Permissions-Policy, −5 pour les fuites de version dans Server/X-Powered-By (plafonné), et −5 pour un X-XSS-Protection non nul. Notes en lettres : 100 = A+, 90 et plus = A, 80 et plus = B, 70 et plus = C, 60 et plus = D, en dessous = F. Les remarques consultatives (attributs de cookies, contrôle du cache, qualité de CSP) ne retirent aucun point.

Erreurs courantes
  • Définir les en-têtes sur les mauvaises réponses. Ajoutez-les à chaque réponse, y compris les pages d’erreur et les redirections — c’est précisément à cela que sert le always de add_header ... always; (nginx) et de Header always set (Apache).
  • Ne tester que la page d’accueil. Les proxys, les caches et les applications anciennes suppriment ou remplacent parfois les en-têtes sur certains chemins seulement. Vérifiez les pages qui comptent : connexion, paiement, points d’accès d’API.
  • Conserver X-XSS-Protection. L’auditeur qu’il pilotait causait ses propres failles ; les navigateurs l’ont supprimé. Une valeur non nulle coûte désormais des points à dessein — supprimez-le et laissez CSP faire le travail.
  • Croire que X-Frame-Options est à jour. Il ne peut pas autoriser des origines précises et ne fait pas partie de la norme CSP ; frame-ancestors est le remplaçant moderne. Conserver les deux pendant la transition est acceptable — cette page accepte l’un ou l’autre.
  • Publier des bannières de version. Server: Apache/2.4.58 (Unix) réduit la recherche d’un attaquant de failles connues sans aucun bénéfice pour vous. Supprimez le numéro de version et limitez le nombre de lignes.
FAQ

Pourquoi COOP/COEP/CORP ne valent-ils que 5 points chacun ? Le trio est la couche la plus récente, principalement nécessaire lorsque vous voulez isoler les processus (SharedArrayBuffer, durcissement contre Spectre). Un site sans eux conserve ses protections essentielles ; avec eux, certaines intégrations inter-origines demandent des ajustements — c’est pourquoi ils pèsent moins que CSP ou HSTS.

Une note élevée signifie-t-elle que le site est sûr ? Non — cela signifie que les en-têtes de réponse sont définis. Les en-têtes de sécurité ne forment qu’une couche : la configuration TLS, la gestion des sessions, la validation des entrées et les correctifs décident toujours de la sécurité réelle du site. Lancez le Contrôle de sécurité SSL pour la couche TLS.

Pourquoi ma valeur Permissions-Policy est-elle si longue ? La base OWASP désactive explicitement chaque fonctionnalité, afin qu’un navigateur qui ajoute de nouvelles fonctionnalités ne les réactive pas en silence. Une valeur plus courte comme camera=(), microphone=(), geolocation=() est un bon début — sachez seulement ce qu’elle laisse activé.

Puis-je vérifier les en-têtes de n’importe quel site depuis ici ? Cette page n’envoie jamais de requête réseau — elle note exactement le texte que vous collez, ce qui permet de l’utiliser derrière un pare-feu ou sur des hôtes internes, et rien de ce que vous inspectez ne quitte votre machine. Récupérer les en-têtes se fait avec une seule commande curl -sI dans votre terminal.

Et Clear-Site-Data et X-Permitted-Cross-Domain-Policies ? Utiles dans des cas précis (réponses de déconnexion ; anciens lecteurs PDF ou Flash). Ici, ils sont consultatifs et ne sont pas notés — envoyer Clear-Site-Data sur chaque réponse effacerait le stockage de vos utilisateurs à chaque chargement de page.