Configurer les headers de sécurité
La fonctionnalité En-têtes de sécurité est la plus configurable de l’extension avec 22 réglages répartis en 6 sections. Chaque en-tête protège contre un type d’attaque spécifique.
[rank_math_breadcrumb]
Section 1 – Protection de base
Strict-Transport-Security (HSTS)
Force le navigateur à toujours utiliser HTTPS, même si le visiteur tape l’adresse en HTTP. L’instruction est mémorisée par le navigateur pendant la durée choisie.
| Réglage | Type | Défaut | Description |
|---|---|---|---|
| Activer HSTS | Case à cocher | Activé | Envoie le header HSTS (nécessite HTTPS) |
| Durée | Sélecteur | 1 an | Durée pendant laquelle le navigateur force HTTPS (1 mois, 6 mois, 1 an) |
| includeSubDomains | Case à cocher | Activé | Applique HSTS à tous les sous-domaines |
| Preload | Case à cocher | Désactivé | Permet l’inscription dans les listes de préchargement des navigateurs |
⚠️ Avertissement : Activez HSTS uniquement si votre site dispose d’un certificat SSL permanent. Une fois qu’un navigateur a enregistré la directive, il refusera de charger votre site en HTTP pendant toute la durée configurée.
⚠️ Preload est irréversible ! Une fois votre domaine soumis sur hstspreload.org, il sera forcé en HTTPS dans tous les navigateurs. Vérifiez d’abord que :
1. Votre certificat SSL se renouvelle automatiquement
2. Toutes les pages fonctionnent en HTTPS
3. Vous n’avez aucune intention de revenir en HTTP
X-Content-Type-Options
Envoie nosniff pour empêcher le navigateur de deviner le type de fichier. Sans cet en-tête, un fichier malveillant renommé en .jpg pourrait être interprété comme un script.
| Réglage | Type | Défaut | Recommandation |
|---|---|---|---|
| nosniff | Case à cocher | Activé | Toujours laisser activé |
X-Frame-Options
Contrôle l’intégration de votre site en iframe sur d’autres sites (protection clickjacking).
| Option | Comportement | Usage |
|---|---|---|
| Désactivé | Aucune restriction | Déconseillé |
| DENY | Iframe interdit partout | Sites jamais intégrés en iframe |
| SAMEORIGIN | Iframe autorisé uniquement par votre propre site | Recommandé |
ℹ️ Note : Les navigateurs modernes utilisent CSP
frame-ancestorsà la place de X-Frame-Options. Ce header reste utile pour les anciens navigateurs.
⚠️ Si vous utilisez DENY et que votre site utilise des iframes internes (personnalisation du thème, page builders), ces fonctionnalités seront cassées. Utilisez SAMEORIGIN.
Referrer-Policy
Contrôle les informations de provenance envoyées lorsqu’un visiteur quitte votre site.
| Option | Informations envoyées |
|---|---|
| Désactivé | Comportement par défaut du navigateur |
| no-referrer | Aucune information envoyée |
| same-origin | Informations envoyées uniquement pour les liens internes |
| strict-origin | Uniquement le nom de domaine (sans le chemin) |
| strict-origin-when-cross-origin | Chemin complet pour les liens internes, domaine seul pour les liens externes |
| origin-when-cross-origin | Domaine pour les liens externes, chemin complet pour les internes |
| no-referrer-when-downgrade | Pas d’information si passage de HTTPS à HTTP |
| unsafe-url | URL complète envoyée partout (déconseillé) |
💡 Conseil : La valeur par défaut
strict-origin-when-cross-originoffre le meilleur équilibre entre vie privée et compatibilité.
X-XSS-Protection
Active le filtre anti-XSS intégré aux anciens navigateurs (Internet Explorer, anciennes versions de Chrome).
| Réglage | Type | Défaut | Recommandation |
|---|---|---|---|
| 1; mode=block | Case à cocher | Activé | Laisser activé |
Section 2 – Content Security Policy (CSP)
La CSP indique au navigateur quelles sources de contenu sont autorisées. C’est l’en-tête le plus puissant mais aussi le plus complexe.
Choisir le mode
| Mode | Description | Quand l’utiliser |
|---|---|---|
| Désactivé | Aucune restriction CSP | Installation initiale |
| Mode test (report-only) | Collecte les violations sans rien bloquer | Commencez toujours par celui-ci |
| Mode actif (enforcement) | Bloque les ressources non autorisées | Quand les violations sont résolues |
💡 Conseil : Activez d’abord le mode test, naviguez sur votre site, puis consultez le journal des violations pour identifier les ressources à autoriser. Une fois les directives ajustées, passez en mode actif.
Les directives CSP
Chaque directive contrôle un type de ressource spécifique :
| Directive | Contrôle | Exemple de valeur |
|---|---|---|
default-src | Sources par défaut (fallback pour toutes les autres) | 'self' |
script-src | Scripts JavaScript | 'self' 'unsafe-inline' https://www.googletagmanager.com |
style-src | Feuilles de style CSS | 'self' 'unsafe-inline' https://fonts.googleapis.com |
img-src | Images | 'self' data: https://i.ytimg.com |
font-src | Polices de caractères | 'self' https://fonts.gstatic.com |
connect-src | Requêtes AJAX/fetch/WebSocket | 'self' https://www.google-analytics.com |
frame-src | iframes | 'self' https://www.youtube.com https://player.vimeo.com |
object-src | Plugins (Flash, Java…) | 'none' |
base-uri | URL de base autorisées | 'self' |
frame-ancestors | Sites pouvant intégrer votre site en iframe | 'self' |
form-action | Destinations autorisées des formulaires | 'self' |
media-src | Vidéos et audios | 'self' |
worker-src | Web Workers et Service Workers | 'self' blob: |
upgrade-insecure-requests | Force HTTPS pour toutes les ressources | Case à cocher |
Syntaxe CSP
Les valeurs sont séparées par des espaces. Les mots-clés spéciaux doivent être entre guillemets simples :
| Syntaxe | Signification |
|---|---|
'self' | Votre propre domaine |
'unsafe-inline' | Autorise les scripts/styles inline dans le HTML |
'none' | Tout bloquer pour cette directive |
https: | Toute ressource servie en HTTPS |
https://domaine.com | Un domaine spécifique |
data: | URI data: (images inline encodées en base64, etc.) |
blob: | URI blob: (Web Workers, etc.) |
Exemple complet : 'self' 'unsafe-inline' https://www.youtube.com https://fonts.googleapis.com
Préréglages pour les services courants
Des boutons de préréglages ajoutent automatiquement les domaines nécessaires pour les services tiers les plus courants :
| Service | Directives modifiées |
|---|---|
| YouTube | frame-src (youtube.com, youtube-nocookie.com), script-src (youtube.com, s.ytimg.com), img-src (i.ytimg.com, img.youtube.com) |
| Vimeo | frame-src (player.vimeo.com), script-src (player.vimeo.com), img-src (i.vimeocdn.com) |
| Google Fonts | style-src (fonts.googleapis.com), font-src (fonts.gstatic.com) |
| Google Analytics | script-src (googletagmanager.com, google-analytics.com), connect-src (google-analytics.com, analytics.google.com), img-src (google-analytics.com) |
| Google Maps | frame-src (google.com, maps.google.com), script-src (maps.googleapis.com), img-src (maps.googleapis.com, maps.gstatic.com) |
| reCAPTCHA | frame-src (google.com, recaptcha.net), script-src (google.com, gstatic.com, recaptcha.net) |
💡 Les préréglages ajoutent les domaines aux valeurs existantes sans les écraser. Si un domaine est déjà présent, il ne sera pas dupliqué.
Journal des violations CSP
Le journal affiche les 20 dernières violations détectées (ressource bloquée, directive violée, page source, date). Utilisez-le pour identifier les ressources à autoriser dans vos directives.
Fallback automatique
Si plus de 10 violations sont détectées en 10 minutes en mode actif, le CSP repasse automatiquement en mode test pour éviter de casser votre site. Ce mécanisme de sécurité se réinitialise après 10 minutes.
Section 3 – Cross-Origin
Ces en-têtes avancés sont désactivés par défaut car ils peuvent impacter le fonctionnement de votre site.
Cross-Origin-Opener-Policy (COOP)
Isole votre page des fenêtres ouvertes par d’autres origines.
| Valeur | Comportement |
|---|---|
| same-origin | Isolation complète — les fenêtres cross-origin ne peuvent pas interagir |
| same-origin-allow-popups | Isolation sauf pour les popups ouvertes par votre site |
| unsafe-none | Pas d’isolation (équivalent à désactivé) |
⚠️ Peut casser les popups OAuth (connexion Google, Facebook), les fenêtres de paiement (Stripe, PayPal) et certains iframes cross-origin.
Cross-Origin-Embedder-Policy (COEP)
Exige que toutes les ressources externes (images, scripts, polices) déclarent explicitement leur autorisation de chargement via les headers CORP ou CORS. Nécessaire pour certaines API avancées comme SharedArrayBuffer.
⚠️ Peut casser le chargement d’images, polices et scripts hébergés sur des CDN externes qui n’envoient pas les headers CORP/CORS.
Cross-Origin-Resource-Policy (CORP)
Contrôle quels sites peuvent charger vos ressources.
| Valeur | Qui peut charger vos ressources |
|---|---|
| same-origin | Uniquement votre domaine exact |
| same-site | Votre domaine et ses sous-domaines |
| cross-origin | Tout le monde (compatible CDN) |
💡 Conseil : Utilisez
cross-originsi vos ressources sont servies via un CDN ou chargées par des sites partenaires.
Section 4 – Permissions Policy
Contrôle quelles API du navigateur votre site et les iframes tiers intégrés peuvent utiliser.
| Feature | Description | Défaut |
|---|---|---|
| geolocation | Accès à la position GPS | Bloqué |
| camera | Accès à la caméra | Bloqué |
| microphone | Accès au micro | Bloqué |
| payment | API de paiement du navigateur | Bloqué |
| usb | Accès aux périphériques USB | Bloqué |
| interest-cohort | Topics API (suivi publicitaire) | Bloqué |
| accelerometer | Capteur d’accélération | Bloqué |
| gyroscope | Capteur gyroscopique | Bloqué |
| magnetometer | Capteur magnétique | Bloqué |
| ambient-light-sensor | Capteur de luminosité | Bloqué |
| display-capture | Capture d’écran | Bloqué |
| autoplay | Lecture automatique de médias | Autorisé (self) |
| fullscreen | Mode plein écran | Autorisé (self) |
| picture-in-picture | Vidéo Picture-in-Picture | Autorisé (self) |
💡 Conseil : Les valeurs par défaut conviennent à la majorité des sites WordPress. Modifiez uniquement si un plugin ou une fonctionnalité nécessite l’accès à une API spécifique.
Section 5 – Headers à supprimer
Masque les informations techniques qui aident les attaquants à cibler les vulnérabilités connues de vos logiciels.
| Réglage | Défaut | Ce qui est masqué |
|---|---|---|
| Supprimer X-Powered-By | Activé | Version de PHP (ex: PHP/8.2) |
| Supprimer X-Generator | Activé | Version de WordPress dans le code source HTML |
ℹ️ Note : Le header
Server(nom et version du serveur web) ne peut être supprimé que via la configuration Apache/Nginx, pas par un plugin PHP.
Section 6 – Contextes & Test
Contextes d’application
| Réglage | Défaut | Description |
|---|---|---|
| Appliquer sur /wp-admin | Désactivé | Par défaut, seule la protection de base (X-Content-Type, X-XSS-Protection) est active sur le back-office pour éviter les conflits |
| Appliquer sur /wp-json | Activé | Protège les endpoints de la REST API |
Tester votre configuration
Deux liens directs permettent de vérifier vos en-têtes sur des outils externes :
- SecurityHeaders.com – Note de A+ à F sur vos headers
- Mozilla Observatory – Audit complet de la sécurité HTTP
Configurations recommandées
Blog / Site vitrine
| Section | Configuration |
|---|---|
| Protection de base | Tout activé, HSTS si SSL permanent |
| CSP | Mode test d’abord, puis mode actif avec directives ajustées |
| Cross-Origin | Désactivé (sauf besoin spécifique) |
| Permissions Policy | Activé avec les valeurs par défaut |
| Headers à supprimer | Tout activé |
Site e-commerce (WooCommerce)
| Section | Configuration |
|---|---|
| Protection de base | Tout activé, HSTS fortement recommandé |
| CSP | Mode test puis mode actif — attention aux passerelles de paiement (Stripe, PayPal) |
| Cross-Origin | COOP : same-origin-allow-popups (pour les popups de paiement) |
| Permissions Policy | Activé — autoriser payment en self si paiement navigateur |
Site avec contenus tiers (YouTube, Vimeo, Google Maps)
| Section | Configuration |
|---|---|
| CSP | Utiliser les préréglages pour ajouter les domaines des services utilisés |
| CORP | cross-origin si les ressources sont servies via CDN |
