← RETOUR AUX GUIDES / SITES WEB

En-têtes de sécurité HTTP expliqués : HSTS, CSP et plus

Rôle de HSTS, CSP, X-Frame-Options, Referrer-Policy et Permissions-Policy, valeurs à utiliser et pourquoi « à examiner » n’est pas toujours une faiblesse.

Par IPNixaPublié le

Vérifier les en-têtes de sécurité d’un site

Que sont les en-têtes de sécurité ?

Chaque réponse HTTP commence par des en-têtes : des paires nom-valeur comme Content-Type: text/html. Quelques-uns modifient la façon dont le navigateur traite la page. Leur envoi ne coûte rien, ils s’appliquent à chaque visiteur et se définissent sur le serveur, la plateforme d’hébergement ou un réseau de diffusion de contenu (CDN), pas dans le HTML de la page.

IPNixa définit ses propres en-têtes dans un fichier _headers que Cloudflare sert avec chaque page. Le test de ce site demande l’adresse que vous saisissez depuis notre serveur, suit jusqu’à trois redirections et lit les en-têtes de la réponse finale.

Les six en-têtes les plus importants

Voici les en-têtes que le test évalue. Les valeurs indiquées sont des points de départ courants et sûrs ; adaptez-les aux besoins de votre site.

En-tête, ce qu’il empêche et valeur type
En-têteCe qu’il empêcheValeur type
Strict-Transport-Security (HSTS)La rétrogradation des connexions en HTTP non chiffré après la première visitemax-age=31536000; includeSubDomains
Content-Security-Policy (CSP)L’exécution de scripts injectés, ce qui limite le cross-site scriptingdefault-src 'self'; script-src 'self'; frame-ancestors 'none'
X-Frame-Options ou CSP frame-ancestorsLe chargement de la page par d’autres sites dans un cadre caché (clickjacking)DENY, ou frame-ancestors 'none'
X-Content-Type-OptionsUn navigateur qui devine le type d’un fichier et exécute des données comme un scriptnosniff
Referrer-PolicyLa fuite vers d’autres sites de l’adresse complète des pages, chemins et paramètres de requête comprisstrict-origin-when-cross-origin
Permissions-PolicyL’utilisation de la caméra, du microphone ou de la localisation par la page ou ses cadres intégréscamera=(), microphone=(), geolocation=()

Comment le test d’IPNixa évalue chaque en-tête

Chaque en-tête reçoit l’un de ces trois états : présent, à examiner ou non fourni. « À examiner » signifie que l’en-tête existe mais que sa valeur ne respecte pas la règle ci-dessous ; c’est une invitation à regarder de plus près, pas une note de sécurité.

Ce qu’envoient de vrais sites : un échantillon

Le 2 novembre 2026, nous avons demandé cinq pages d’accueil avec le même User-Agent que celui du test, puis soumis les réponses aux règles d’évaluation d’IPNixa. Les en-têtes changent souvent : considérez ceci comme un instantané.

Évaluation de cinq pages d’accueil, 2 novembre 2026
SiteHSTSCSPCadresnosniffReferrerPermissions
github.comprésentà examinerprésentprésentprésentnon fourni
ipnixa.comprésentà examinerprésentprésentprésentprésent
www.wikipedia.orgprésentnon fourninon fourninon fourninon fourninon fourni
www.google.comnon fourniReport-Onlyprésentnon fourninon fourninon fourni
example.comnon fourninon fourninon fourninon fourninon fourninon fourni

Lire l’échantillon : « à examiner » ne veut pas dire faible

La politique de GitHub limite les scripts à son propre hôte de ressources et à des hachages précis, ce qui est strict. Elle n’obtient l’état « à examiner » que parce que sa directive style-src autorise 'unsafe-inline', et la règle cherche ce mot-clé partout dans la politique. Les styles en ligne présentent un risque bien moindre que les scripts en ligne : il s’agit donc d’un compromis délibéré plutôt que d’une faille.

Notre propre site obtient l’état « à examiner » pour une autre raison : sa politique ne contient que frame-ancestors 'none', qui bloque l’intégration en cadre mais ne restreint pas les scripts. Nous indiquons ici le résultat tel quel.

La page d’accueil de Google envoie sa politique de scripts en Content-Security-Policy-Report-Only, qui signale les violations sans les bloquer, et n’envoyait pas HSTS dans cette réponse ; les grands sites peuvent imposer HTTPS par d’autres moyens, comme les listes de préchargement des navigateurs. Le portail de Wikipedia envoie un max-age HSTS très long et peu d’autres en-têtes sur cette page. Rien de tout cela n’indique si ces sites sont sûrs dans l’ensemble ; cela montre seulement quelles protections du navigateur chaque réponse demande.

Ajouter les en-têtes à votre propre site

Ajoutez un en-tête à la fois, rechargez votre site et vérifiez que les pages, les connexions, les vidéos intégrées et les formulaires de paiement fonctionnent toujours avant d’ajouter le suivant.

  1. Commencez par les en-têtes peu risqués : X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin et X-Frame-Options: DENY, sauf si vos pages doivent être intégrées dans un cadre par un autre site.
  2. Ajoutez HSTS avec un max-age court, par exemple 300, vérifiez que chaque sous-domaine fonctionne en HTTPS, puis passez à 31536000. N’ajoutez includeSubDomains que lorsque tous les sous-domaines prennent en charge HTTPS.
  3. Rédigez une Content-Security-Policy et envoyez-la d’abord sous la forme Content-Security-Policy-Report-Only. Recueillez les rapports de violation ou surveillez la console du navigateur, corrigez ou autorisez les sources légitimes, puis passez à l’en-tête qui applique la politique.
  4. Ajoutez Permissions-Policy en listant les fonctionnalités sensibles que vous n’utilisez pas, par exemple camera=(), microphone=(), geolocation=().
  5. Sous nginx, utilisez add_header avec le paramètre always ; sous Apache, Header always set ; sur un hébergement statique ou un CDN, le fichier d’en-têtes ou les règles d’en-têtes de réponse de la plateforme.
  6. Relancez le test des en-têtes d’IPNixa. Pour chaque en-tête non fourni, il affiche une ligne prête à copier pour nginx, Apache ou un fichier _headers.

Préchargement HSTS et autres précautions

Les listes de préchargement HSTS sont intégrées aux navigateurs : même la toute première visite utilise donc HTTPS. Pour y soumettre un domaine, il faut un max-age d’au moins un an, includeSubDomains et la directive preload, et un retrait met des mois à atteindre les utilisateurs. Ne soumettez un domaine que si tous ses sous-domaines, y compris internes, resteront en HTTPS.

X-XSS-Protection est obsolète : les navigateurs modernes l’ignorent et une CSP le remplace. Les en-têtes d’isolation cross-origin (Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy et Cross-Origin-Resource-Policy) ne sont pas évalués par le test, car seuls les sites qui utilisent des fonctionnalités comme la mémoire partagée en ont besoin, et leur activation peut bloquer des contenus intégrés tiers.

Questions fréquentes

Un en-tête absent signifie-t-il qu’il est risqué de visiter le site ?

Non. Les en-têtes ajoutent, côté navigateur, une protection contre des attaques précises. Un site qui n’en envoie pas peut tout de même être bien géré, et un site qui les envoie tous peut avoir d’autres failles. Utilisez le résultat comme une liste de contrôle pour le propriétaire du site, pas comme un verdict pour les visiteurs.

Pourquoi mon navigateur affiche-t-il des en-têtes que le test n’a pas vus ?

Les sites peuvent faire varier leurs en-têtes selon la page, le pays, l’état de connexion ou l’emplacement du CDN. Le test lit une seule réponse pour l’adresse saisie, récupérée depuis le réseau de Cloudflare sans cookies.

Faut-il utiliser X-Frame-Options ou frame-ancestors ?

La directive frame-ancestors de la CSP est le contrôle moderne et peut autoriser des sites précis. Envoyer aussi X-Frame-Options permet de couvrir les anciens navigateurs ; lorsque les deux sont présents, les navigateurs actuels suivent frame-ancestors.

Puis-je vérifier une page qui exige une connexion ?

Non. Le test n’envoie ni cookies ni identifiants et refuse les adresses privées et locales. Pour une page protégée par une connexion ou située sur un réseau privé, copiez les en-têtes de réponse bruts depuis les outils de développement de votre navigateur ou avec curl -I, puis collez-les dans l’outil ; les en-têtes collés sont analysés dans votre navigateur.

Sources et lectures complémentaires