Sécurité WordPress

Security Headers WordPress : renforcer la sécurité de votre site.

Les Security Headers ne rendent pas un site invulnérable. En revanche, ils ajoutent une couche de protection utile contre plusieurs attaques courantes, souvent avec peu de changements côté WordPress.

  • Guide pratique
  • WordPress
  • Sécurité technique

Un Security Header est une instruction envoyée par le serveur au navigateur. Elle indique comment la page doit être chargée, quelles ressources sont autorisées, si le site peut être affiché dans une iframe, ou encore comment les informations de provenance doivent être transmises.

Dans mon travail sur des sites WordPress, je vois souvent ce point oublié. Ce n’est pas toujours visible pour le propriétaire du site, parce que l’interface fonctionne normalement. Pourtant, côté navigateur, ces en-têtes peuvent bloquer ou limiter certains comportements risqués.

Le bon réflexe consiste à les voir comme une barrière supplémentaire. Ils ne remplacent pas les mises à jour, les sauvegardes, les mots de passe solides ou un hébergement sérieux. Ils complètent simplement l’ensemble.

Pourquoi les Security Headers sont importants ?

Sans headers de sécurité, un site laisse davantage de marge au navigateur et aux scripts externes. Dans certains cas, cela peut faciliter des attaques ou des fuites d’information.

Attaques XSS

Des scripts malveillants peuvent chercher à s’exécuter dans une page pour voler des données ou modifier le comportement du site.

Clickjacking

Une page peut être affichée dans une iframe externe pour pousser un utilisateur à cliquer sans s’en rendre compte.

Mauvaise interprétation des fichiers

Certains navigateurs peuvent tenter de deviner le type d’un fichier, ce qui ouvre parfois des comportements indésirables.

Fuite de provenance

Les liens sortants peuvent transmettre plus d’informations que nécessaire sur la page d’origine.

Important : il faut éviter de copier une configuration trop stricte sans test. Une Content Security Policy mal réglée peut bloquer des scripts, des polices, des formulaires ou des outils de mesure utiles au site.

Les principaux headers à connaître

Voici les en-têtes que je vérifie le plus souvent sur un site WordPress. Tous ne se configurent pas de la même façon selon l’hébergement, le cache, le CDN ou les extensions en place.

Content-Security-Policy

Définit les sources autorisées pour les scripts, images, styles et autres ressources. C’est puissant, mais à tester avec prudence.

Content-Security-Policy: upgrade-insecure-requests

X-Frame-Options

Limite l’affichage du site dans une iframe externe, utile contre le clickjacking.

X-Frame-Options: SAMEORIGIN

X-Content-Type-Options

Demande au navigateur de respecter le type MIME déclaré, sans essayer de deviner.

X-Content-Type-Options: nosniff

Referrer-Policy

Contrôle les informations transmises lorsqu’un visiteur clique vers un autre site.

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

Strict-Transport-Security

Force le navigateur à utiliser HTTPS pendant une durée donnée. À activer seulement quand HTTPS est propre partout.

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

Permissions-Policy

Encadre l’accès à certaines fonctionnalités du navigateur comme la caméra, le micro ou la géolocalisation.

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

Note sur X-XSS-Protection : on le croise encore dans beaucoup d’exemples, mais il est aujourd’hui ancien et peu utile sur les navigateurs modernes. Je préfère le considérer comme secondaire, et mettre l’effort sur une bonne CSP, HTTPS, les mises à jour et les permissions.

Comment les mettre en place sur WordPress ?

Il existe plusieurs approches. La meilleure dépend surtout de votre niveau technique et de l’endroit où vous pouvez agir : extension WordPress, serveur Apache, configuration Nginx, hébergeur ou CDN.

Via une extension

C’est l’option la plus accessible si vous ne voulez pas modifier de fichiers serveur. Certaines extensions de sécurité ou SSL proposent des réglages pour les headers.

  • Avantage : interface simple et réversible.
  • Limite : dépend de l’extension et de votre configuration de cache.

Via le fichier .htaccess

Sur un serveur Apache, vous pouvez ajouter les headers dans le fichier .htaccess. Avant toute modification, je conseille de sauvegarder le fichier : une erreur peut rendre le site inaccessible.

# Security Headers
<IfModule mod_headers.c>
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
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=()"
</IfModule>

Via functions.php

Cette méthode fonctionne côté WordPress, mais elle est liée au thème actif. Sur un site client, je l’utilise avec prudence, plutôt dans un thème enfant ou une petite extension dédiée.

function wstt_add_security_headers() {
    header('X-Frame-Options: SAMEORIGIN');
    header('X-Content-Type-Options: nosniff');
    header('Referrer-Policy: strict-origin-when-cross-origin');
    header('Permissions-Policy: camera=(), microphone=(), geolocation=()');
}
add_action('send_headers', 'wstt_add_security_headers');

Comment tester si les headers sont actifs ?

Une fois la configuration ajoutée, il faut vérifier le résultat. Le cache serveur, le cache WordPress ou un CDN peuvent retarder l’affichage des changements.

Avec des outils en ligne

  • SecurityHeaders.com pour une lecture rapide des en-têtes détectés.
  • Mozilla Observatory pour un diagnostic plus détaillé.
  • GTmetrix si vous l’utilisez déjà dans vos contrôles techniques.

Depuis le navigateur

Vous pouvez aussi ouvrir les outils développeur, aller dans l’onglet réseau, recharger la page, puis cliquer sur le document principal. Les headers apparaissent dans la section des en-têtes de réponse.

strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()

En résumé

Les Security Headers sont une amélioration technique raisonnable pour un site WordPress. Ils ne sont pas une solution magique, mais ils réduisent certaines surfaces d’attaque et donnent un cadre plus strict au navigateur.

  • Commencez simple, puis testez.
  • Sauvegardez avant de modifier un fichier serveur.
  • Vérifiez que le site, les formulaires, les polices et les scripts fonctionnent encore.
  • Gardez en tête que la sécurité WordPress reste un ensemble : mises à jour, sauvegardes, accès, hébergement et surveillance.

Quand j’interviens sur un site, je préfère une configuration claire, testée et maintenable plutôt qu’une liste de headers copiée sans comprendre ses effets.

Besoin d’aide pour sécuriser votre site ?