24 avril 2026 · 10 min de lecture

Headers HTTP de sécurité : le guide complet pour un site web protégé en 2026

En bref : les headers HTTP de sécurité sont une défense passive contre 80 % des attaques web automatisées (XSS, clickjacking, sniffing, injection de contenu). Leur configuration prend 30 minutes. Leur absence est un motif d'affaiblissement en cas de contrôle CNIL suite à une fuite. Voici les 7 headers essentiels, leur rôle, et comment les activer sur Apache, Nginx et cPanel.

Pourquoi les headers HTTP sont critiques

Les headers HTTP de sécurité sont des instructions que votre serveur envoie au navigateur à chaque réponse. Ils disent au navigateur : « Fais confiance à X, refuse Y, bloque Z ». Cela crée une couche de protection supplémentaire entre le navigateur et votre site.

Concrètement, sans ces headers :

Et en cas de fuite de données, la CNIL examine vos headers. Leur absence = négligence = amende alourdie.

Les 7 headers essentiels (par ordre de priorité)

1. Strict-Transport-Security (HSTS) Facile

Rôle : force le navigateur à utiliser HTTPS pour toutes les futures requêtes vers votre domaine, empêchant le downgrade vers HTTP.

Configuration recommandée :

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Effet : une fois qu'un navigateur a vu ce header, il refusera pendant 1 an toute tentative de connexion HTTP vers votre domaine.

2. X-Content-Type-Options Facile

Rôle : empêche le navigateur de « deviner » le type MIME d'un fichier. Par exemple, un fichier uploadé en .jpg mais contenant du JavaScript ne sera pas exécuté.

X-Content-Type-Options: nosniff

Effet : protection contre les attaques par confusion de type (MIME sniffing attacks).

3. X-Frame-Options Facile

Rôle : interdit à d'autres sites d'intégrer le vôtre dans une iframe. Protection directe contre le clickjacking.

X-Frame-Options: SAMEORIGIN

Effet : votre site ne peut être intégré que dans une iframe provenant de votre propre domaine.

4. Referrer-Policy Facile

Rôle : contrôle les informations envoyées dans le header Referer lorsqu'un utilisateur clique sur un lien sortant. Protège contre la fuite de données via URL.

Referrer-Policy: strict-origin-when-cross-origin

Effet : envoie l'origine complète pour les liens internes, mais seulement le domaine pour les liens externes.

5. Permissions-Policy Moyen

Rôle : anciennement Feature-Policy. Contrôle quelles API navigateur sont accessibles à votre site (caméra, micro, géolocalisation…).

Permissions-Policy: geolocation=(), microphone=(), camera=()

Effet : même si un script injecté tente d'accéder au micro de l'utilisateur, le navigateur refusera.

6. Content-Security-Policy (CSP) Difficile

Rôle : liste blanche des sources autorisées pour scripts, styles, images, etc. La défense la plus puissante contre les XSS, mais la plus complexe à configurer.

Configuration minimale (à adapter à votre site) :

Content-Security-Policy: default-src 'self';
  script-src 'self' 'unsafe-inline' https://www.googletagmanager.com;
  style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
  font-src 'self' https://fonts.gstatic.com;
  img-src 'self' data: https:;
  connect-src 'self';

⚠️ Attention : une CSP trop stricte peut casser votre site (scripts analytics, polices Google, iframes). Commencez en mode Report-Only pour détecter les blocages sans impacter les utilisateurs :

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

7. Cross-Origin-Opener-Policy (COOP) Moyen

Rôle : isole votre site des autres pages ouvertes dans le même contexte (protection contre Spectre et autres attaques CPU).

Cross-Origin-Opener-Policy: same-origin

Effet : même si un utilisateur ouvre votre site depuis un onglet compromis, les deux environnements restent isolés.

Configuration concrète selon votre serveur

Apache / .htaccess (hébergement mutualisé OVH, cPanel, etc.)

Créez ou éditez le fichier .htaccess à la racine de votre site :

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
    Header always set Cross-Origin-Opener-Policy "same-origin"
    # CSP : à tester en Report-Only d'abord !
    Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data: https:;"
</IfModule>

Nginx

Dans votre fichier de configuration de site :

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Content-Security-Policy "default-src 'self'" always;

PHP (si pas d'accès au serveur)

Ajoutez au tout début de vos fichiers PHP principaux (ou dans un include chargé partout) :

<?php
header('Strict-Transport-Security: max-age=31536000; includeSubDomains');
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: SAMEORIGIN');
header('Referrer-Policy: strict-origin-when-cross-origin');
header('Permissions-Policy: geolocation=(), microphone=(), camera=()');
?>

Comment tester votre configuration

Trois outils gratuits pour vérifier vos headers :

  1. SecurityHeaders.com — note votre site de A+ à F, détaille chaque header manquant.
  2. Mozilla Observatory — observatory.mozilla.org, analyse plus poussée avec recommandations.
  3. VeriSite (shameless plug) — scan de conformité complet : headers + RGPD + RGAA + LCEN en 30 secondes.

Tester progressivement : activez un header à la fois et vérifiez que rien ne casse (surtout pour CSP). Surveillez la console navigateur (F12) pour détecter les blocages.

Les erreurs les plus fréquentes

🔒 Vérifier vos headers en 30 secondes

VeriSite teste automatiquement vos 7 headers de sécurité + 29 autres critères de conformité. Rapport immédiat avec le code exact pour corriger.

Scanner mon site

Pour aller plus loin