Comment sécuriser les headers HTTP de votre site web
La sécurité de votre site web ne se limite pas au code que vous écrivez. Les headers HTTP de sécurité constituent une couche de protection essentielle, souvent négligée par les PME. Pourtant, quelques lignes de configuration suffisent pour bloquer une grande partie des attaques courantes comme le cross-site scripting (XSS), le clickjacking ou le vol de données.
Chez Yaba IT, nous auditons systématiquement les headers HTTP de nos clients en Brabant wallon. Voici les headers indispensables à configurer dès aujourd'hui.
Content-Security-Policy (CSP)
Le header CSP est le plus puissant : il définit les sources autorisées pour chaque type de ressource (scripts, styles, images, polices…). Il bloque l'exécution de scripts injectés par un attaquant.
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none';
Bonnes pratiques :
- Commencez par
Content-Security-Policy-Report-Onlypour tester sans casser votre site - Évitez
'unsafe-eval'autant que possible - Utilisez des nonces ou des hashes pour les scripts inline nécessaires
- Ajoutez
report-uripour monitorer les violations en production
X-Frame-Options
Ce header empêche votre site d'être intégré dans un <iframe> sur un domaine tiers, protégeant ainsi contre le clickjacking — une attaque où un utilisateur clique sur un élément invisible superposé à votre site.
X-Frame-Options: DENY
Ou, si vous devez autoriser l'intégration depuis votre propre domaine :
X-Frame-Options: SAMEORIGIN
Notez que frame-ancestors dans CSP remplace progressivement ce header, mais il reste recommandé de garder les deux pour la compatibilité avec les anciens navigateurs.
HTTP Strict Transport Security (HSTS)
HSTS force les navigateurs à utiliser exclusivement HTTPS pour communiquer avec votre site, empêchant les attaques de type man-in-the-middle et le stripping SSL.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Important :
max-age=31536000correspond à un anincludeSubDomainsprotège aussi vos sous-domainespreloadpermet d'être inclus dans la liste HSTS preload des navigateurs- Assurez-vous que tous vos sous-domaines supportent HTTPS avant d'activer
includeSubDomains
Autres headers essentiels
X-Content-Type-Options
Empêche le navigateur de deviner le type MIME d'une ressource, bloquant certaines attaques par injection :
X-Content-Type-Options: nosniff
Referrer-Policy
Contrôle les informations de référent envoyées lors de la navigation :
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy
Restreint l'accès aux API du navigateur (caméra, micro, géolocalisation…) :
Permissions-Policy: camera=(), microphone=(), geolocation=(), interest-cohort=()
Comment vérifier vos headers ?
Utilisez des outils gratuits comme securityheaders.com ou les DevTools de votre navigateur (onglet Network → cliquez sur une requête → Headers). Visez un score A+ sur securityheaders.com.
Configuration pratique
Sur Netlify, ajoutez un fichier _headers à la racine de votre dossier public :
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline';
Conclusion
La mise en place de headers HTTP de sécurité est l'une des actions les plus simples et les plus efficaces pour protéger votre site. C'est un investissement de quelques minutes qui réduit considérablement votre surface d'attaque. Chez Yaba IT, nous intégrons ces protections dans chaque projet que nous livrons aux PME du Brabant wallon et de Bruxelles.
Besoin d'un audit de sécurité complet ? Contactez-nous pour une analyse personnalisée de votre infrastructure.