Les en-têtes HTTP de sécurité sont des instructions que votre serveur envoie au navigateur avec chaque page. Ils lui demandent, par exemple, de n’utiliser que le HTTPS, de refuser d’afficher le site dans une iframe étrangère ou de n’exécuter que des scripts provenant de sources autorisées. Quelques lignes de configuration suffisent pour neutraliser des catégories entières d’attaques : c’est l’une des mesures les plus rentables pour un site web.
Ce guide détaille chaque en-tête, sa valeur de départ raisonnable, ses pièges, et une méthode de déploiement qui ne casse rien.
L’essentiel en 30 secondes
- Le socle minimal :
Strict-Transport-Security,X-Content-Type-Options,X-Frame-Options(ouframe-ancestors),Referrer-Policy. - La
Content-Security-Policyest la plus puissante et la plus délicate : à construire progressivement, en mode observation d’abord. - Après chaque ajout, testez les fonctions sensibles : connexion, paiement, formulaires, éditeur de pages.
Tableau récapitulatif
| En-tête | Protège contre | Valeur de départ | Risque de casse |
|---|---|---|---|
| Strict-Transport-Security | Rétrogradation vers HTTP, interception | max-age=31536000 | Faible (sous-domaines sans HTTPS) |
| X-Content-Type-Options | Interprétation détournée de fichiers | nosniff | Très faible |
| X-Frame-Options | Détournement de clic (clickjacking) | SAMEORIGIN | Faible (DENY casse certains éditeurs) |
| Referrer-Policy | Fuite d’URL vers des sites tiers | strict-origin-when-cross-origin | Très faible |
| Permissions-Policy | Abus de fonctions du navigateur | camera=(), microphone=(), geolocation=() | Faible |
| Content-Security-Policy | Injection de scripts (XSS) | Mode Report-Only d’abord | Élevé si mal construite |
Strict-Transport-Security (HSTS)
HSTS impose au navigateur d’utiliser uniquement le HTTPS pour votre domaine pendant la durée indiquée. Même si un visiteur tape « http:// » ou clique sur un vieux lien, le navigateur passe directement en HTTPS, ce qui empêche les attaques de rétrogradation sur un Wi-Fi public.
Strict-Transport-Security: max-age=31536000
Piège principal : la directive includeSubDomains applique la règle à tous les sous-domaines. Si l’un d’eux a un certificat expiré ou absent (un vieux sous-domaine de test, un panneau d’administration oublié), il deviendra inaccessible. Inventoriez vos sous-domaines avant de l’ajouter. La directive preload (inscription dans la liste intégrée aux navigateurs) est encore plus engageante et difficile à annuler.
X-Content-Type-Options
X-Content-Type-Options: nosniff
Il interdit au navigateur de « deviner » le type d’un fichier à partir de son contenu. Sans lui, un fichier téléversé et servi comme image pourrait, dans certaines conditions, être interprété comme un script. Risque de casse quasi nul, à mettre partout.
X-Frame-Options et frame-ancestors
X-Frame-Options: SAMEORIGIN
Il empêche un site tiers d’afficher vos pages dans une iframe invisible pour piéger les clics de vos visiteurs. DENY interdit toute iframe, y compris sur votre propre domaine, ce qui casse les constructeurs de pages qui affichent un aperçu du site dans l’éditeur. SAMEORIGIN est le bon compromis. L’équivalent moderne, plus souple, est la directive frame-ancestors 'self' d’une CSP.
Referrer-Policy
Referrer-Policy: strict-origin-when-cross-origin
Quand un visiteur clique sur un lien sortant, le navigateur indique au site de destination d’où il vient. Avec cette valeur, seul votre domaine est transmis aux sites tiers, pas l’adresse complète de la page (qui peut contenir des paramètres sensibles). Les outils d’analyse continuent de fonctionner.
Permissions-Policy
Permissions-Policy: camera=(), microphone=(), geolocation=()
Elle désactive les fonctions du navigateur dont votre site n’a pas besoin. Si un script tiers est compromis, il ne pourra pas demander l’accès à la caméra ou à la position. Attention aux services qui en ont réellement besoin (prise de rendez-vous en visio, carte de géolocalisation, captcha) : certaines extensions ajoutent leurs propres directives.
Content-Security-Policy (CSP)
La CSP déclare, type par type, les sources autorisées : scripts, styles, images, polices, iframes, connexions. Bien construite, elle neutralise la plupart des injections de scripts. Sur un site WordPress avec constructeur de pages, outils d’analyse, polices externes, vidéo intégrée et module de paiement, la liste des sources légitimes est longue.
La méthode :
- Publier une politique en
Content-Security-Policy-Report-Only: le navigateur signale les violations sans rien bloquer. - Analyser les rapports pendant quelques semaines et compléter la liste des sources.
- Réduire les permissions dangereuses (
'unsafe-inline','unsafe-eval') quand c’est possible, avec des nonces ou des empreintes. - Passer en mode bloquant, puis surveiller.
Mise en œuvre selon le serveur
Apache ou LiteSpeed (.htaccess)
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Strict-Transport-Security "max-age=31536000"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
Piège : si un autre bloc plus bas dans le fichier (souvent laissé par une ancienne extension de cache) définit le même en-tête avec Header set, c’est la dernière définition qui gagne. Cherchez les doublons.
Nginx
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Strict-Transport-Security "max-age=31536000" always;
Attention : un add_header dans un bloc location annule ceux hérités du bloc parent.
Vérifier
- Outils de développement du navigateur, onglet Réseau, en-têtes de réponse de la page.
- Un scanner d’en-têtes en ligne pour une note globale.
- Un test des parcours critiques : connexion, ajout au panier, paiement, formulaires, éditeur.
- La réponse sur plusieurs types de fichiers (pages, images, robots.txt), car certaines règles ne s’appliquent qu’à certains types.
Questions fréquentes
Ces en-têtes améliorent-ils le référencement ?
Pas directement. Mais le HTTPS et la sécurité font partie des signaux de confiance, et un site piraté perd très vite sa visibilité.
X-XSS-Protection est-il encore utile ?
Non : il est obsolète dans les navigateurs modernes et peut même introduire des comportements indésirables. C’est la CSP qui prend le relais.
Faut-il ajouter ces en-têtes via une extension WordPress ?
C’est possible, mais la configuration serveur est plus fiable : elle s’applique aussi aux fichiers statiques et ne dépend pas du chargement de WordPress.
Mon hébergeur les ajoute-t-il déjà ?
Certains en ajoutent une partie. Vérifiez les en-têtes réels de vos pages avant d’ajouter les vôtres, pour éviter les doublons contradictoires.
Vous pouvez vérifier mon site ?
Oui, cela fait partie de nos audits de sécurité, avec un plan de correction sans régression.
Besoin d’un accompagnement ?
MPCÂBLE Solutions Informatiques (MPCSI) accompagne particuliers, entreprises, associations et collectivités depuis Gaudiès, en Ariège : sur site en Occitanie, principalement dans un rayon de 40 km (Pamiers, Foix, Mirepoix, Saverdun, Castelnaudary), et à distance partout en France. Demandez un devis gratuit ou appelez le 05 32 42 99 98.
