Comment ajouter des en-têtes de sécurité sur n’importe quelle pile
Cinq en-têtes couvrent l’essentiel. Voici ce que fait chacun d’eux et les lignes exactes pour votre serveur.
Le code et la configuration restent en anglais.
Le socle de départ
Strict-Transport-Security: toujours utiliser HTTPS pour ce site (lisez le guide HSTS avant de l’activer).X-Content-Type-Options: nosniff: empêche les navigateurs de deviner le type des fichiers.X-Frame-Options: SAMEORIGIN: empêche d’autres sites d’encadrer le vôtre (clickjacking).Referrer-Policy: strict-origin-when-cross-origin: transmet moins de vos URL aux autres sites.Permissions-Policy: désactive les fonctions du navigateur que vous n’utilisez pas.
nginx
Ajoutez ceci dans votre bloc server { }, puis lancez nginx -t et rechargez.
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 "camera=(), microphone=(), geolocation=()" always;Attention : si un bloc location a son propre add_header, nginx ignore ceux du niveau server pour cette location. Répétez-y les en-têtes, ou placez-les dans un fichier include partagé.
Apache (.htaccess)
Nécessite mod_headers (activé chez la plupart des hébergeurs).
<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 "camera=(), microphone=(), geolocation=()"
</IfModule>Cloudflare
- Activez HSTS dans SSL/TLS → Edge Certificates → HTTP Strict Transport Security.
- Pour les autres en-têtes, créez une Response Header Transform Rule (Rules → Transform Rules → Modify Response Header) qui définit chaque en-tête comme valeur statique pour toutes les requêtes entrantes.
WordPress sans accès au serveur
Créez wp-content/mu-plugins/security-headers.php. Les extensions must-use se chargent automatiquement.
<?php
// Security headers for pages WordPress serves.
add_action( 'send_headers', function () {
header( 'X-Content-Type-Options: nosniff' );
header( 'X-Frame-Options: SAMEORIGIN' );
header( 'Referrer-Policy: strict-origin-when-cross-origin' );
header( 'Permissions-Policy: camera=(), microphone=(), geolocation=()' );
} );Cela ne couvre que les pages générées par PHP. Les fichiers statiques et certains caches de pages passent outre ; les en-têtes au niveau du serveur ou du CDN sont donc préférables quand vous pouvez les utiliser.
Étape suivante : Content-Security-Policy
CSP est l’en-tête le plus puissant et celui qui risque le plus de casser quelque chose. Suivez le guide CSP et commencez en mode rapport seul.