Chaque fois que quelqu'un visite votre site, votre serveur lui envoie une réponse HTTP. Cette réponse contient votre page, mais elle peut aussi contenir des instructions de sécurité destinées au navigateur de votre visiteur. C'est ce qu'on appelle les headers HTTP de sécurité.
La plupart des sites de PME n'en ont aucun. C'est une erreur de configuration simple à corriger, qui protège contre des catégories entières d'attaques, sans toucher au code du site.
Ce que sont vraiment les headers HTTP
Un header HTTP, c'est une ligne d'instruction invisible dans la réponse de votre serveur. Vos visiteurs ne la voient jamais, mais leur navigateur la lit et l'applique.
Imaginez que chaque fois qu'un client entre dans votre boutique, vous lui donnez des consignes : «Ne partagez pas mes informations avec les boutiques à côté», «N'ouvrez pas les colis que vous n'avez pas commandé ici», «Si quelqu'un se prétend être moi mais vient d'ailleurs, ne le croyez pas».
Les headers de sécurité font exactement ça, avec le navigateur de vos visiteurs.
Les 5 headers essentiels
X-Frame-Options
Ce qu'il fait : empêche votre site d'être intégré dans une iframe sur un autre site.
Pourquoi c'est important : sans ce header, un attaquant peut créer une page transparente au-dessus de la vôtre. Vos visiteurs pensent cliquer sur votre bouton «Commander», ils cliquent en réalité sur quelque chose d'autre. C'est ce qu'on appelle le clickjacking.
Valeur recommandée : X-Frame-Options: SAMEORIGIN
X-Content-Type-Options
Ce qu'il fait : force le navigateur à respecter le type de fichier déclaré par votre serveur.
Pourquoi c'est important : sans ce header, certains navigateurs tentent de «deviner» le type d'un fichier, ce qui peut permettre d'exécuter du code malveillant déguisé en image ou en fichier texte.
Valeur recommandée : X-Content-Type-Options: nosniff
Referrer-Policy
Ce qu'il fait : contrôle les informations envoyées sur vos visiteurs quand ils cliquent sur un lien qui les emmène hors de votre site.
Pourquoi c'est important : sans ce header, quand un visiteur quitte votre site, l'URL complète de la page qu'il consultait est transmise au site de destination. Si cette URL contient des informations sensibles (paramètres de recherche, identifiants…), elles sont exposées.
Valeur recommandée : Referrer-Policy: strict-origin-when-cross-origin
Content-Security-Policy (CSP)
Ce qu'il fait : liste explicitement les sources depuis lesquelles votre site est autorisé à charger des ressources (scripts, images, polices, vidéos).
Pourquoi c'est important : si un attaquant parvient à injecter du code dans votre site (via un formulaire, un plugin vulnérable ou une attaque XSS), ce code tentera généralement de charger des ressources depuis un serveur externe. Une CSP bien configurée bloque cela.
Note : c'est le header le plus puissant mais aussi le plus complexe à configurer. Une CSP mal configurée peut casser des fonctionnalités de votre site. Si vous n'êtes pas sûr, commencez par les autres headers.
Permissions-Policy
Ce qu'il fait : contrôle l'accès aux fonctionnalités du navigateur depuis votre site, caméra, microphone, géolocalisation, notifications push.
Pourquoi c'est important : si votre site n'utilise pas la caméra, ce header dit explicitement au navigateur qu'il ne doit jamais autoriser un script sur votre site à y accéder, même si un script malveillant en fait la demande.
Valeur recommandée : Permissions-Policy: camera=(), microphone=(), geolocation=() (adaptez selon ce que vous utilisez réellement)
Comment vérifier les headers de votre site
Deux outils gratuits :
- Notre simulateur NordSite, analyse les headers de sécurité de votre site en quelques secondes et affiche les manquants. Testez votre site gratuitement →
- securityheaders.com, outil spécialisé qui note votre site de A à F selon les headers présents.
Comment les ajouter sur votre site
La méthode dépend de votre hébergement :
Sur un hébergement mutualisé (Apache / .htaccess)
Ajoutez ces lignes dans votre fichier .htaccess à la racine de votre site, fonctionne chez la quasi-totalité des hébergeurs mutualisés (OVH, Infomaniak, o2switch, Ionos…) :
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()" Sur WordPress
Vous pouvez ajouter ces headers via le fichier .htaccess (ci-dessus), ou via un plugin de sécurité comme Wordfence ou Solid Security qui propose une interface pour les configurer sans toucher aux fichiers.
Sur un serveur Nginx
Dans votre bloc server ou location :
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin"; Un exemple concret
J'ai audité récemment un site de prestataire de services dans le Pas-de-Calais. Aucun des 5 headers de sécurité n'était configuré. Son score de sécurité était de 35/100, le minimum de base, rien que pour avoir le HTTPS.
Après ajout des 4 premiers headers dans le .htaccess (10 minutes de travail), son score est passé à 71/100. La CSP a nécessité une heure supplémentaire pour ne pas casser le chargement de ses images hébergées sur un CDN.
Ce type d'intervention est inclus dans notre Pack mise en sécurité (490€ HT) ou peut être réalisé séparément.
Ce que les headers ne font pas
Il faut être honnête : les headers HTTP de sécurité ne remplacent pas :
- Les mises à jour de CMS et plugins (source n°1 des piratages WordPress)
- Les sauvegardes régulières
- Un mot de passe fort et unique sur le back-office
- L'authentification à deux facteurs
Ce sont des mesures complémentaires. Une défense en profondeur : plusieurs couches de protection, chacune bloquant une catégorie différente d'attaques.
À retenir : les headers HTTP de sécurité sont une configuration serveur, pas du code à développer. Sur un site déjà en ligne, on les ajoute en quelques lignes dans le fichier de configuration. Coût : presque nul. Impact : significatif sur votre score de sécurité et votre protection réelle.
Vous voulez savoir lesquels manquent sur votre site ? Testez gratuitement avec notre simulateur →