En-têtes de sécurité : 54 % des grands sites web obtiennent encore un F
par detektd team

Depuis 2015, le chercheur Scott Helme (créateur de securityheaders.com et de Report URI) parcourt régulièrement le million de sites les plus visités pour relever les en-têtes HTTP de sécurité qu'ils renvoient. Son édition de juin 2026, publiée le 29 juin, s'appuie sur la liste Tranco : 819 002 sites ont répondu au crawl du 13 juin. C'est la seule série qui permet de comparer l'état de la configuration du web sur dix ans avec la même méthode.
des 819 002 sites du top 1 million obtiennent la note F sur leurs en-têtes de sécurité (Scott Helme, juin 2026)
Dix ans de progrès réels
Les courbes montent toutes. En août 2015, 62 043 sites redirigeaient vers HTTPS ; ils sont 658 038 en juin 2026, soit 80,3 % des sites ayant répondu. HSTS, qui interdit au navigateur de revenir en HTTP, passe de 11 308 à 252 846 sites (30,9 %). Content-Security-Policy, l'en-tête qui limite ce qu'une page a le droit de charger et d'exécuter, passe de 1 365 sites à 170 057 : 125 fois plus en dix ans, et plus du double depuis juin 2022 (79 549).
Les en-têtes plus récents suivent : Referrer-Policy est présent sur 229 130 sites (+223 % depuis 2022), Permissions-Policy sur 101 364 (+209 %). Le nombre de sites notés A+ a presque quadruplé depuis 2022 (de 2 860 à 10 496), et celui des sites notés F a reculé de 564 740 à 440 832. Mais ce F reste la note de plus d'un site sur deux.
Une CSP présente n'est pas une CSP efficace
Le chiffre le plus instructif du rapport porte sur la qualité des politiques. Sur les 170 057 CSP relevées, 79 464 (46,8 %) contiennent 'unsafe-inline', et 71 094 (41,9 %) 'unsafe-eval'. Appliqué aux scripts, 'unsafe-inline' autorise justement l'exécution de n'importe quel script écrit dans la page, c'est-à-dire la forme exacte que prend une injection XSS. Une telle politique réduit le chargement de scripts depuis des domaines inconnus, mais ne bloque pas le cas le plus courant.
des politiques CSP du top 1 million contiennent 'unsafe-inline', la directive qui, appliquée aux scripts, laisse passer le XSS (Scott Helme, juin 2026)
La méthode recommandée par Google et par le W3C, la CSP « stricte » à base de nonce ou de hash avec 'strict-dynamic', reste marginale : 24,7 % des politiques utilisent un nonce, mais seulement 2 774 (1,6 %) ajoutent 'strict-dynamic', et 318 (0,2 %) activent Trusted Types. Seules 4,8 % des politiques déclarent un point de collecte des violations (report-uri ou report-to) : la grande majorité des équipes ne saurait donc pas si leur CSP bloque une attaque, ou casse une fonctionnalité.
# Present, but any injected <script> tag still runs Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https: # Strict: only a script carrying this response's nonce runs Content-Security-Policy: script-src 'nonce-r4nd0m' 'strict-dynamic'; object-src 'none'; base-uri 'none'; frame-ancestors 'self'; report-to csp
Le nonce doit être aléatoire et changer à chaque réponse : un nonce figé dans un template ou mis en cache par un CDN équivaut à 'unsafe-inline'. Avec 'strict-dynamic', les scripts chargés par un script de confiance héritent de cette confiance, ce qui évite de maintenir une liste de domaines. Next.js documente cette configuration via un middleware qui génère le nonce par requête.
HSTS, cookies, clickjacking : les détails qui comptent
Même constat pour HSTS : sur 252 846 sites qui l'envoient, 69,2 % fixent une durée d'au moins un an, 49,8 % couvrent les sous-domaines, et seuls 53 019 (21 %) réunissent les trois conditions pour la liste de préchargement des navigateurs. Sans préchargement, la toute première visite reste en HTTP, et donc interceptable sur un réseau hostile.
Côté cookies, 314 878 sites en déposent au moins un. Parmi eux, 189 528 utilisent l'attribut Secure, 223 384 HttpOnly et 176 300 SameSite. Autrement dit, 91 494 sites n'utilisent HttpOnly sur aucun de leurs cookies, et 125 350 jamais Secure. Les préfixes __Host- et __Secure-, qui garantissent au navigateur qu'un cookie n'a pas pu être écrasé par un sous-domaine ou une page HTTP, n'apparaissent que sur 802 et 1 913 sites.
Contre le clickjacking, X-Frame-Options reste dominant (327 918 sites, 40 %) alors que la directive CSP frame-ancestors, qui le remplace et accepte plusieurs origines, n'apparaît que dans 77 873 politiques. À l'inverse, 163 114 sites envoient encore X-XSS-Protection, un en-tête que plus aucun navigateur majeur n'applique. Et certains en-têtes en disent trop : X-Powered-By annonce Next.js sur 17 541 sites, et « PHP/7.4.33 », une version sans correctifs depuis novembre 2022, sur 9 264.
Une base qui tient la route
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; add_header Cross-Origin-Opener-Policy "same-origin" always; # CSP set by the application (per-request nonce), with frame-ancestors 'self' proxy_hide_header X-Powered-By; server_tokens off;
- Redirigez tout le HTTP vers HTTPS, puis envoyez HSTS avec une durée d'un an minimum. Ajoutez includeSubDomains et preload seulement une fois tous les sous-domaines servis en HTTPS.
- Déployez une CSP à nonce avec 'strict-dynamic', d'abord en Content-Security-Policy-Report-Only avec un point de collecte, puis en mode bloquant une fois les rapports propres.
- Posez Secure, HttpOnly et SameSite sur chaque cookie de session, et préfixez-le en __Host- si possible.
- Retirez les en-têtes qui annoncent les versions (X-Powered-By, Server) et ceux qui ne servent plus (X-XSS-Protection).
Ce que detektd vérifie
À chaque scan, detektd lit les en-têtes réellement servis et ne se contente pas de leur présence : CSP permissive ('unsafe-inline', 'unsafe-eval', jokers), nonce statique, CSP en Report-Only seulement, durée HSTS trop courte ou préchargement inopérant, redirection HTTPS manquante, page encadrable (clickjacking), cookies de session sans Secure ou HttpOnly, contenu mixte, Referrer-Policy et Permissions-Policy trop ouvertes, ainsi que la configuration TLS et le certificat.

DBIR 2026 : l'exploitation de failles devient la première porte d'entrée
Dans le rapport annuel de Verizon, l'exploitation de vulnérabilités explique 31 % des intrusions, devant le phishing et les identifiants volés. Dans le même temps, les entreprises n'ont entièrement corrigé que 26 % des failles activement exploitées, en 43 jours médians. Ce que ça implique pour une application web exposée.

Certificats TLS : de 398 à 47 jours, le renouvellement manuel a vécu
Depuis le 15 mars 2026, un certificat public ne peut plus dépasser 200 jours. Ce sera 100 jours en 2027 et 47 jours en 2029, et Let's Encrypt descendra à 45 jours dès 2028. Le calendrier, les raisons, et ce qu'il faut automatiser pour qu'un certificat expiré ne coupe plus jamais votre site.