Skip to content

Content-Security-Policy : Protéger votre site sans bloquer vos utilisateurs

Brandon Visca
Published date:

Table des matières

Open Table des matières

Qu’est-ce qu’une Content-Security-Policy (CSP) ?

La CSP est un header HTTP qui indique au navigateur quelles ressources il est autorisé à charger (scripts, styles, images, etc.) et depuis quelles sources.

Son objectif principal : empêcher l’exécution de contenu non prévu dans la page, comme un script malveillant injecté par un attaquant (attaque XSS).

Prenons un exemple simple :

Content-Security-Policy: default-src 'self'

Sans CSP, le navigateur l’exécutera. Avec une bonne politique, il le bloquera purement et simplement.


Intégrer une CSP dans Nginx

Dans Nginx, la CSP se configure via une directive add_header dans votre bloc server {} ou location {}.

Exemple basique :

add_header Content-Security-Policy "default-src 'self'" always;

add_header Content-Security-Policy “default-src ‘self’; script-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’ https:; style-src ‘self’ ‘unsafe-inline’ https:; img-src ‘self’ data: https:; font-src ‘self’ https: data:; connect-src ‘self’ https:; frame-ancestors ‘self’;” always;

Détails des directives :

💡 Tu peux affiner chaque directive selon les besoins de ton site.


CSP et environnement frontend moderne

Si tu utilises un framework comme Vue, React, Angular ou un CMS comme WordPress, il faut adapter la CSP :

Exemple spécifique WordPress avec CDN :

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://code.jquery.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;" always;

add_header Content-Security-Policy-Report-Only “default-src ‘self’; script-src ‘self’ https:;” always;

Couple ça avec une plateforme de monitoring CSP comme :


Où ajouter la CSP dans Nginx ?

Toujours dans le bloc server {} ou directement dans un location si tu veux l’appliquer uniquement sur des zones sensibles (/admin, /login, etc.)

Important : ajoute always pour que le header soit appliqué même sur les pages 404/500.


Conseils pratiques


Tester votre configuration

Voici les meilleurs outils pour valider ta politique CSP :

Avec une CSP bien configurée, ton site obtiendra facilement un score A ou A+ sur ces plateformes.


Cas réel : CSP dans un contexte scolaire (site avec sous-répertoires)

Si tu héberges des applications ou sites étudiants dans des sous-répertoires (/tata, /toto, etc.), tu peux appliquer une CSP globale dans un bloc avec regex :

location ~ ^/([a-z0-9-]+)(/.*)?$ {
    root /home/app/htdocs;
    try_files $uri $uri/ /$1/index.php?$args;

    add_header Content-Security-Policy "default-src 'self'; script-src 'self' https:;" always;
}
Previous
Limiter les risques sur Nginx : fichiers sensibles, uploads, méthodes HTTP
Next
Comment renforcer la sécurité de Nginx avec les headers HTTP essentiels