Consultez les Security Headers HTTP réellement envoyés par un site et identifiez ceux qui manquent, qui sont vulnérables ou qui s'annulent mutuellement sans que l'on s'en aperçoive. Gratuit, sans inscription.
Vérification des en-têtes de sécurité
HTTP security headers are instructions a web server sends with every response to switch on protections the browser already has: which sources may execute script, whether the site may be loaded over plain HTTP, and whether another site may frame it. The reportedIP Security Header Check reads those headers, weighs each one by what it actually prevents, and names the concrete change for every gap.
Fonctionnement de cet outil et ses limites
The address is fetched with a normal GET request, following up to three redirects, and the response headers are read. GET rather than HEAD, because a fair number of servers, reverse proxies and firewalls answer HEAD from a different code path with a shorter header set, which would report headers as missing that a real browser does receive. The check is run from this server, so a site that varies its headers by country, by user agent or by login state may answer differently to you.
The score is weighted, not a count. Content-Security-Policy and Strict-Transport-Security carry the most weight because they decide whether injected script runs and whether a request can be forced back to plain HTTP. Referrer-Policy and Permissions-Policy limit leakage and weigh less. COOP, COEP and CORP carry no weight at all: they exist to isolate pages that need high-resolution timers, and a site that does not need them is not less secure for leaving them out.
X-Frame-Options is not reported as missing when the Content-Security-Policy sets frame-ancestors. frame-ancestors is the specified successor, every current browser honours it, and it can name individual permitted origins, which X-Frame-Options never could. A Content-Security-Policy sent only in Report-Only form is treated as what it is: a measuring instrument that records violations and blocks nothing.
Only one page is read. Headers are usually set at the server or proxy level and therefore apply everywhere, but an application can add or drop them per route, so checking the page that matters, the login or the checkout, is worth more than checking the front page. The tool reads headers only and never inspects the page content, so it cannot tell whether a policy is actually wide enough for the site to work.
Pourquoi une liste d’en-têtes ne remplace pas une note
La plupart des outils de vérification d’en-têtes vous fournissent une liste de contrôle et une note. Cela revient à considérer qu’un en-tête Permissions-Policy manquant pose le même problème qu’un en-tête Content-Security-Policy manquant, ce qui n’est pas le cas. L’un limite les capacités de l’API du navigateur ; l’autre fait la différence entre l’exécution ou non d’un script intersite.
Ce contrôle évalue chaque en-tête en fonction de ce qu’il empêche. Le Content-Security-Policy compte le plus, suivi de l’HSTS, puis de la protection contre le framing et de la détection du type de contenu. Les en-têtes d’isolation inter-origines sont signalés mais notés zéro, car un site qui n’en a jamais eu besoin ne devrait pas perdre de points pour cela.
Les erreurs d’une liste de contrôle
« frame-ancestors » remplace « X-Frame-Options ».
Un site doté d’une Content-Security-Policy correcte n’a pas besoin de l’ancien en-tête, et exiger les deux relève d’un conseil datant d’il y a dix ans. Une politique de type « report-only » ne compte pas, car les navigateurs ne l’appliquent pas.
« max-age=0 » est pire que l’absence totale de HSTS.
Cela indique activement au navigateur d’oublier que le site a jamais été exclusivement en HTTPS. Une liste de contrôle détecte la présence de cet en-tête et coche la case correspondante.
Un HSTS sur un HTTP simple n’a aucune valeur.
Les navigateurs l’ignorent dans ce cas ; la vérification l’exclut donc du calcul au lieu de retirer des points pour cela.
Ce qu’elle analyse
La page est récupérée via une requête GET normale, et non HEAD, car certains serveurs répondent différemment à ces deux requêtes et ce sont les en-têtes que le navigateur voit qui comptent. Seuls les en-têtes de réponse sont inspectés ; le contenu de la page n’est pas stocké.