Content-Security-Policy sans casser votre site
Une CSP indique au navigateur à quelles sources de scripts, de styles et d’images faire confiance. C’est votre meilleure défense contre les scripts injectés et les skimmers de cartes, et elle récompense un déploiement soigné.
Le code et la configuration restent en anglais.
1. Commencez en mode rapport seul
Le navigateur signale les violations dans la console, mais ne bloque rien.
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data: https:; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'" always;2. Parcourez votre site et lisez la console
Ouvrez DevTools → Console sur vos pages clés (accueil, une fiche produit, le panier et le paiement, le formulaire de contact). Chaque source bloquée y apparaît. Ajoutez celles en qui vous avez confiance, comme https://www.googletagmanager.com ou votre prestataire de paiement, à la directive correspondante.
3. Appliquez
Quand la console est calme, renommez l’en-tête en Content-Security-Policy. Gardez l’en-tête de rapport seul à côté pendant que vous testez une version plus stricte.
Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; object-src 'none'; base-uri 'self'"Conseils pour WordPress
- Beaucoup de thèmes et d’extensions utilisent des scripts inline. Au début, vous aurez peut-être besoin de
'unsafe-inline'dansscript-src. C’est moins protecteur, maisframe-ancestors,object-srcetbase-urirestent utiles. - Pour une politique stricte, utilisez des nonces : WordPress 5.7+ peut ajouter des attributs aux scripts affichés avec
wp_print_inline_script_tag(). - Mettez d’abord une CSP stricte sur votre paiement, là où elle compte le plus.
Directives utiles
frame-ancestors 'self': le remplaçant moderne de X-Frame-Options.upgrade-insecure-requests: fait passer automatiquement les ressources http:// en https://.connect-src: limite les destinations vers lesquelles les scripts peuvent envoyer des données, utile contre les skimmers.