Les en-têtes de sécurité HTTP que tout site d'entreprise devrait envoyer
Les en-têtes de sécurité HTTP sont des instructions que votre serveur web envoie avec chaque page. Ils indiquent au navigateur comment traiter votre site : toujours utiliser HTTPS, ne pas laisser d'autres sites afficher vos pages dans une frame, ne pas deviner le type des fichiers, ne charger des scripts que depuis des emplacements de confiance. Ils n'ont aucun coût en performance et se configurent une seule fois sur le serveur ou le CDN.
La réponse courte pour la plupart des sites d'entreprise : envoyez Strict-Transport-Security, Content-Security-Policy (au minimum avec frame-ancestors), X-Content-Type-Options, Referrer-Policy et Permissions-Policy, posez les bons attributs sur vos cookies et supprimez les en-têtes qui révèlent les versions de vos logiciels. Les valeurs recommandées ci-dessous suivent l'OWASP HTTP Headers Cheat Sheet et la documentation MDN.
L'absence d'en-têtes est rarement une urgence en soi. C'est un indicateur du soin apporté à la configuration d'un site, et ces en-têtes ferment des catégories entières d'attaques côté navigateur.
Comment vérifier vos en-têtes
Demandez au serveur les en-têtes de votre page d'accueil :
curl -sI https://yourcompany.com/
Vérifiez chaque nom d'hôte, pas seulement le principal : boutique, connexion, portail client et tout ancien serveur de préproduction qui répond encore. Les en-têtes définis dans l'application disparaissent souvent sur les pages d'erreur, les redirections et les fichiers statiques, testez donc plusieurs URL différentes.
Les en-têtes à envoyer
Strict-Transport-Security (HSTS)
Indique au navigateur de n'utiliser que HTTPS pour votre domaine pendant une durée définie, afin qu'un visiteur ne puisse pas être discrètement rétrogradé vers HTTP.
Strict-Transport-Security: max-age=63072000; includeSubDomains
max-age s'exprime en secondes. N'ajoutez includeSubDomains que si tous vos sous-domaines fonctionnent en HTTPS. Pour figurer dans les listes de préchargement des navigateurs, hstspreload.org exige un max-age d'au moins 31536000 (1 an), includeSubDomains et preload. Le préchargement est difficile à annuler : ajoutez-le en dernier.
Content-Security-Policy (CSP)
Liste les sources depuis lesquelles la page peut charger scripts, styles, images et frames. Une bonne politique est la défense côté navigateur la plus solide contre le cross-site scripting, mais elle doit être adaptée à votre site. Commencez en mode rapport seul avec Content-Security-Policy-Report-Only, observez ce qui serait bloqué, puis appliquez-la.
Même avant une politique complète, une directive est simple et utile :
Content-Security-Policy: frame-ancestors 'self'
frame-ancestors détermine quels sites peuvent intégrer vos pages, ce qui bloque le clickjacking. Elle doit être envoyée comme en-tête ; elle ne fonctionne pas dans une balise <meta>.
X-Frame-Options
L'ancienne méthode pour bloquer l'intégration en frame. L'OWASP recommande frame-ancestors lorsque c'est possible et X-Frame-Options: DENY (ou SAMEORIGIN) en solution de repli pour les anciens navigateurs.
X-Content-Type-Options
X-Content-Type-Options: nosniff
Empêche le navigateur de deviner le type d'un fichier, de sorte qu'un fichier téléversé ne puisse pas être exécuté comme script. Vérifiez que vos en-têtes Content-Type sont corrects sur tout le site.
Referrer-Policy
Referrer-Policy: strict-origin-when-cross-origin
Limite la part de vos URL transmise aux autres sites lorsque les visiteurs cliquent sur des liens. C'est important lorsque les URL contiennent des numéros de commande, des jetons ou des termes de recherche.
Permissions-Policy
Permissions-Policy: geolocation=(), camera=(), microphone=()
Désactive les fonctionnalités du navigateur que votre site n'utilise pas, afin qu'un script injecté ne puisse pas les demander.
Les cookies ont aussi besoin d'attributs
Les cookies de session doivent être définis avec Secure (HTTPS uniquement), HttpOnly (illisibles depuis JavaScript) et SameSite=Lax ou Strict :
Set-Cookie: session=...; Secure; HttpOnly; SameSite=Lax; Path=/
Vérifiez aussi l'attribut Domain du cookie. Un cookie rattaché à .yourcompany.com est lisible par tous les sous-domaines, ce qui compte si l'un d'eux est un jour pris en main via un enregistrement DNS orphelin.
Les en-têtes à supprimer ou à abandonner
ServeretX-Powered-Byavec numéros de version, commeApache/2.4.41ouPHP/7.4.3. Ils indiquent à n'importe qui quel logiciel et quelle version rechercher. L'OWASP recommande de supprimerX-Powered-Byet de rendreServernon informatif.X-XSS-Protection. MDN le marque comme obsolète et non standard et précise qu'il peut créer des problèmes sur des sites par ailleurs sûrs. L'OWASP recommande de ne pas le définir, ou d'utiliserX-XSS-Protection: 0, et de s'appuyer sur la CSP.Expect-CT. L'OWASP déconseille de l'utiliser et recommande de le retirer des configurations existantes.
Où les définir
Définissez les en-têtes à un seul endroit qui couvre toutes les réponses : le serveur web (nginx add_header ... always;, Apache Header always set), le CDN ou les réglages d'en-têtes de la plateforme d'hébergement. Le mot-clé always de nginx est important : sans lui, les en-têtes ne sont ajoutés qu'aux réponses réussies et aux redirections, pas aux pages d'erreur.
Une courte liste de contrôle
- Lancez
curl -sIsur chaque nom d'hôte que vous possédez. - Ajoutez HSTS,
X-Content-Type-Options,Referrer-Policy,Permissions-Policyetframe-ancestors. - Déployez d'abord une CSP complète en mode rapport seul.
- Posez
Secure,HttpOnlyetSameSitesur les cookies de session. - Retirez les numéros de version de
ServeretX-Powered-By, et abandonnezX-XSS-ProtectionetExpect-CT. - Vérifiez à nouveau après chaque changement de serveur, de CDN ou de plateforme.
Pendant que vous êtes dans la configuration du serveur, assurez-vous aussi qu'il ne sert pas de fichiers .env, .git ou de sauvegarde exposés.
La place de Datahorses
Datahorses surveille vos sites web depuis l'extérieur chaque jour et vérifie ce que reçoivent les navigateurs et les attaquants : en-têtes de sécurité manquants, cookies sans Secure, HttpOnly ou SameSite, serveurs qui affichent leurs versions et contenu HTTP mixte sur des pages HTTPS. Nous n'entrons pas dans vos systèmes et n'avons besoin d'aucun accès, et chaque constat comprend la modification de configuration exacte pour votre développeur. Consultez la liste complète de ce que nous surveillons ou demandez une proposition.
Plus d’articles
Exigences de Gmail et Yahoo pour les expéditeurs : ce qui a changé en 2024 et ce qu'il faut vérifier
Depuis février 2024, Gmail et Yahoo attendent des expéditeurs en masse des e-mails authentifiés et alignés, ainsi qu'un désabonnement facile. Voici ce que disent les règles et comment vérifier votre domaine.
Expiration des certificats SSL/TLS : pourquoi elle met encore des sites hors ligne
Un certificat expiré bloque les visiteurs derrière un avertissement plein écran et peut casser API et messagerie. Les durées de validité raccourcissent : le renouvellement doit fonctionner à chaque fois.
PHP2Shell : quelles versions de PHP sont corrigées et comment contrôler la vôtre
Le projet PHP a corrigé 2 failles critiques le 21 octobre 2026. Voici les versions qui contiennent le correctif, comment voir ce qu'annonce votre serveur et quoi demander à votre hébergeur.