Générez votre header Content-Security-Policy directive par directive, avec analyse de securite et snippets Nginx, Apache et meta prets a copier.
Générateur de Content-Security-Policy
🔧 Directives
⚙️ Options globales
🔎 Analyse de sécurité
Score : —Content-Security-Policy : votre meilleure défense contre le XSS
La Content-Security-Policy (CSP) est un en-tête HTTP de sécurité qui indique au navigateur quelles sources de contenu sont autorisées : scripts, styles, images, polices, requêtes réseau, iframes… Bien configurée, elle constitue la défense la plus efficace contre les attaques Cross-Site Scripting (XSS) et le clickjacking, car un script injecté depuis un domaine non autorisé est tout simplement bloqué par le navigateur. Ce générateur vous aide à composer cette policy directive par directive, avec une analyse en temps réel et le code prêt à coller pour Nginx, Apache ou une balise <meta>.
Comment fonctionne une politique CSP
Une CSP est une liste de directives, chacune suivie d'une ou plusieurs sources autorisées, séparées par des points-virgules. La directive default-src sert de filet de sécurité : toute ressource dont la directive spécifique n'est pas définie retombe sur elle. Les mots-clés s'écrivent entre apostrophes ('self', 'none'), les domaines en clair.
Content-Security-Policy:
default-src 'self';
script-src 'self' https://cdn.jsdelivr.net;
style-src 'self' 'unsafe-inline';
img-src 'self' data:;
font-src 'self';
connect-src 'self';
frame-ancestors 'none';
upgrade-insecure-requests;
Les mots-clés de sources à connaître
| Source | Signification | Risque |
|---|---|---|
'self' | Le même domaine (origine) que la page | sûr |
'none' | Aucune source autorisée — tout est bloqué | sûr |
'unsafe-inline' | Autorise les scripts/styles écrits dans le HTML | élevé |
'unsafe-eval' | Autorise eval() et assimilés | élevé |
'nonce-xxx' | Autorise un script portant ce jeton unique | sûr |
data: | Autorise les URI data: (images inline) | modéré |
https: | N'importe quelle origine en HTTPS | modéré |
Remplacer unsafe-inline par un nonce
Le plus gros piège d'une CSP est 'unsafe-inline' dans script-src : il rouvre la porte au XSS que la CSP est censée fermer. La bonne pratique consiste à attribuer un nonce (jeton aléatoire généré à chaque réponse) à vos scripts en ligne légitimes. Le navigateur n'exécute alors que les scripts portant ce jeton.
<!-- Header : script-src 'self' 'nonce-r4nd0m123' -->
<script nonce="r4nd0m123">
// Ce script s'exécute car son nonce correspond à la policy
console.log('autorisé');
</script>
Déployer la policy sur votre serveur
Le header CSP s'envoie idéalement côté serveur (Nginx, Apache, middleware applicatif) plutôt que via une balise <meta>, car la balise ne supporte ni frame-ancestors ni le mode Report-Only. Sélectionnez le format voulu dans l'outil pour obtenir le snippet adapté.
# Nginx — dans le bloc server { } ou location / { }
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; ..." always;
Content-Security-Policy-Report-Only. La policy n'est pas appliquée mais les violations sont remontées dans la console : vous repérez les ressources à autoriser sans casser le site.
FAQ — Content-Security-Policy
frame-ancestors est le successeur moderne de X-Frame-Options : il contrôle quels sites peuvent intégrer votre page dans une iframe, pour empêcher le clickjacking. Avec 'none', personne ne peut vous encadrer. Il est plus souple car il accepte une liste de domaines autorisés.
<meta http-equiv="Content-Security-Policy" content="...">. Mais la balise meta ne supporte pas frame-ancestors, report-uri ni le mode Report-Only. Pour un déploiement réel, préférez le header HTTP côté serveur.
Conclusion
Une Content-Security-Policy bien pensée transforme votre navigateur en pare-feu : elle bloque les scripts malveillants, empêche le clickjacking et impose le HTTPS. Le secret d'un déploiement réussi tient en trois étapes : composer une policy stricte basée sur 'self', la tester en mode Report-Only pour lister les ressources légitimes, puis remplacer chaque 'unsafe-inline' par un nonce. Ce générateur vous fait gagner du temps en produisant un header propre, analysé et prêt à coller dans votre configuration Nginx ou Apache. Copiez, testez, durcissez.