appuyez sur ⌘K pour changer d’outil
SECURITY

Vérificateur d'en-têtes de sécurité HTTP

Notez les en-têtes de sécurité HTTP d'un site et voyez ce que chaque absence expose.

server
security-headers

🌐 sitekits fetches the URL server-side (private/internal addresses are blocked). Only response headers are read — the body is never retrieved.

§01 À PROPOS DE CET OUTIL

Aperçu

Les en-têtes de sécurité constituent la partie de la défense d’un site qui tient entièrement dans la réponse, ce qui les rend faciles à vérifier et faciles à se tromper subtilement. Un en-tête peut être présent et ne rien faire : max-age=0 désactive HSTS, une CSP contenant 'unsafe-inline' exécute quand même un <script> injecté, et X-Frame-Options: ALLOW-FROM est ignoré par tous les navigateurs livrés aujourd’hui.

Cet outil récupère l’URL côté serveur, ne lit que les en-têtes de la réponse et note sept points sur une échelle pondérée de 100. Les poids reflètent ce que chacun empêche réellement, et chaque note est accompagnée d’une remarque nommant l’exposition précise plutôt qu’un simple « en-tête manquant ».

Utilisation

  1. Collez une URL. Le schéma peut être omis ; https est supposé.
  2. Lisez la note globale et les notes par point.
  3. Traitez les remarques dans l’ordre. Chacune décrit ce qui est exposé, pas seulement ce qui est absent.

Ce que signifient les poids

Compter les en-têtes traite chaque manque comme équivalent. Il ne l’est pas : un X-Frame-Options absent peut être couvert par frame-ancestors dans la CSP, alors qu’une CSP absente n’a aucun substitut.

PointPoidsRaison
Content-Security-Policy25Le seul en-tête qui empêche un script injecté de s’exécuter et d’exfiltrer
Strict-Transport-Security20Empêche la rétrogradation en HTTP de la première requête
Protection contre l’encadrement15Clickjacking ; satisfaite par CSP frame-ancestors ou X-Frame-Options
X-Content-Type-Options10Un content-type erroné réinterprété comme du script
Referrer-Policy10La part de vos URL qui fuit vers d’autres origines
Permissions-Policy10Caméra, micro et géolocalisation laissés implicitement ouverts
Divulgation de version10Une déduction, pas une protection — voir ci-dessous

Comment les valeurs sont lues

La CSP part de 100 et perd des points pour ce qui l’affaiblit réellement. 'unsafe-inline' dans le script-src effectif coûte 45 — mais seulement en l’absence de nonce ou d’empreinte, car les navigateurs qui les comprennent ignorent alors entièrement 'unsafe-inline'. 'unsafe-eval' coûte 20. Un base-uri absent coûte 15 : sans lui, un élément <base> injecté réécrit chaque URL relative de la page, y compris les sources des scripts. Un object-src 'none' absent coûte 10. Content-Security-Policy-Report-Only seul obtient zéro, car rien n’est bloqué — c’est un instrument de mesure, pas une défense.

HSTS est noté d’après max-age : un an ou plus atteint 80, six mois 60, moins que cela 35, et max-age=0 obtient 0 puisqu’il désactive HSTS. includeSubDomains ajoute 20, et c’est cet ajout qui porte un en-tête correct à 100. Six mois est également le plancher de la liste de préchargement des navigateurs : une valeur plus courte ne peut donc pas être préchargée, quelle que soit l’intention.

La protection contre l’encadrement est satisfaite par CSP frame-ancestors avec la note maximale, ou par X-Frame-Options: DENY/SAMEORIGIN à 60 — cela fonctionne encore, mais la spécification a évolué. ALLOW-FROM obtient 0 : Chrome ne l’a jamais implémenté et Firefox l’a supprimé en version 70, une page qui s’y fie reste donc encadrable.

La divulgation de version est la seule déduction. Server: Apache/2.4.41 et X-Powered-By: PHP/7.4.3 indiquent à un attaquant exactement quelles CVE publiées essayer, et aucun des deux ne protège quoi que ce soit. Une valeur sans version comme Server: cloudflare n’est pas pénalisée : la plupart des CDN l’envoient toujours et vous ne pouvez pas la retirer, la noter serait donc un point que personne ne peut corriger.

Ce que cet outil ne voit pas

Les en-têtes ne sont qu’une couche. Une note parfaite ne dit rien de votre configuration TLS, des attributs de vos cookies, de l’application effective de l’authentification, ni du fait que votre CSP autorise une origine qui héberge elle-même du contenu contrôlé par un attaquant.

Les attributs Set-Cookie en particulier ne sont pas notés, car ils sont propres à chaque cookie et non à la réponse : un cookie de session sans HttpOnly et Secure est un problème sérieux qu’aucune note d’en-têtes ne révélera.

La CSP est également notée sur sa syntaxe et ses mots-clés, pas sur votre liste d’autorisation. Une politique script-src 'self' https://cdn.example.com obtient la note maximale, et si ce CDN sert du JavaScript déposé par des utilisateurs, la politique n’offre aucune protection. La note mesure la forme de la politique ; c’est à vous de juger les sources.

Exemples

  • Vérifier qu’un changement est bien arrivé en production — notez l’URL avant et après une modification de configuration CDN. Les en-têtes définis à l’origine sont fréquemment supprimés ou écrasés par un proxy, et c’est le moyen le plus rapide de voir la réponse telle que les navigateurs la reçoivent.
  • Expliquer un constat à une équipe — les remarques énoncent le mécanisme, ce qui convainc mieux qu’un nom d’en-tête dans un tableau d’audit.
  • Contrôler une cible de redirection — les en-têtes notés sont ceux de la réponse finale. Une page d’atterrissage qui redirige vers un autre hôte arrive souvent quelque part sans aucun des en-têtes qu’avait le point d’entrée.
  • Avant de demander le préchargement HSTS — la soumission exige un max-age d’au moins un an, plus includeSubDomains et preload. Le préchargement est difficile à annuler : confirmez d’abord l’en-tête sur chaque sous-domaine.
  • Construire la politique elle-même — le générateur CSP assemble l’en-tête directive par directive, et en-têtes HTTP affiche la réponse brute complète quand vous avez besoin des valeurs telles quelles.

Remarques

Les en-têtes notés sont ceux de la réponse finale. Si l’URL redirige, la note décrit le point d’arrivée, et la chaîne est affichée pour repérer un point d’entrée dont les en-têtes diffèrent de sa destination.

Feature-Policy est accepté à la place de Permissions-Policy pour le même point, certains serveurs émettant encore l’ancien nom. Referrer-Policy obtient la note maximale pour no-referrer, same-origin, strict-origin et strict-origin-when-cross-origin ; les autres valeurs obtiennent la moitié, car elles laissent fuir plus d’URL que nécessaire vers d’autres origines.

Les en-têtes uniquement. Cet outil ne récupère, ne conserve ni ne transmet jamais le corps de la réponse, et les requêtes vers des adresses privées, de boucle locale, lien-local et réservées sont refusées avant toute connexion — y compris après une redirection. Les détails figurent dans la politique de confidentialité.

FAQ
Pourquoi ma note est-elle plus basse qu'avec d'autres outils ?
La plupart des outils comptent les en-têtes. Celui-ci lit leurs valeurs. Une CSP contenant 'unsafe-inline' sans nonce ni empreinte n'arrête pas un script injecté, et un en-tête HSTS avec max-age=0 désactive HSTS : les deux sont présents et aucun ne fonctionne. Présence et effet sont deux choses distinctes, et seul l'effet mérite d'être noté.
Le contenu de la page est-il téléchargé ?
Non. La requête est faite côté serveur et le corps est annulé dès l'arrivée des en-têtes. Rien de la page n'est conservé ni renvoyé, et les adresses privées, de boucle locale et lien-local sont refusées avant même l'ouverture de la connexion.
Les redirections sont-elles suivies ?
Jusqu'à cinq sauts, et chaque saut est revalidé selon les mêmes règles d'adressage : une URL publique ne peut donc pas rediriger vers votre réseau interne. Les en-têtes notés sont ceux de la réponse finale, ce qui est généralement l'information voulue, puisque c'est cette réponse que le navigateur applique.
Ma CSP contient 'unsafe-inline' mais aussi des empreintes. Est-ce pénalisé ?
Non. Si script-src contient un nonce ou une empreinte sha256/384/512, les navigateurs qui les comprennent ignorent entièrement 'unsafe-inline'. C'est la voie de migration prévue par la spécification, la combinaison est donc notée comme stricte.
Pourquoi X-Frame-Options seul ne donne-t-il pas la note maximale ?
Parce que CSP frame-ancestors l'a remplacé. X-Frame-Options fonctionne encore dans tous les navigateurs actuels, il obtient donc 60 plutôt que 0 — mais ALLOW-FROM obtient 0, car aucun navigateur actuel ne l'a jamais implémenté et une page qui s'y fie reste encadrable.
Quelle note viser ?
A signifie que chaque en-tête est présent et que chaque valeur joue son rôle. B et C indiquent le plus souvent qu'un en-tête important manque ou qu'une valeur est permissive. En dessous, lisez le rapport comme une liste de contrôle plutôt que comme une note : les remarques nomment l'exposition précise de chaque point.