Service en ligne 100% Gratuit Utilitaires Web AngularForAll

- Générateur Content-Security-Policy (CSP) header

Content-Security-Policy Csp Generateur-Csp Csp-Header Securite-Web Script-Src Style-Src Nonce-Csp Frame-Ancestors Anti-Xss Clickjacking Header-Securite Nginx Apache

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
💡 Astuce : commencez en Report-Only pour repérer les blocages dans la console avant d'activer la vraie policy.
🔎 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

    SourceSignificationRisque
    'self'Le même domaine (origine) que la pagesû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 uniquesûr
    data:Autorise les URI data: (images inline)modéré
    https:N'importe quelle origine en HTTPSmodé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>
    Important : le nonce doit être imprévisible et régénéré à chaque requête côté serveur. Un nonce statique codé en dur n'apporte aucune sécurité.

    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;
    Bon réflexe : activez d'abord 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

    Non, c'est une défense en profondeur, pas une protection unique. Il faut toujours échapper et valider les entrées utilisateur côté serveur. La CSP agit comme un second rempart : si une injection passe malgré tout, le navigateur refuse d'exécuter le script non autorisé.
    Le plus souvent, des ressources légitimes (Google Fonts, un CDN, des scripts en ligne) ne sont pas autorisées. Ouvrez la console : chaque blocage est journalisé avec la directive fautive. Ajoutez le domaine concerné à la bonne directive ou passez par un nonce pour les scripts en ligne.
    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.
    Oui pour un test rapide, via <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.
    Non. Tout le calcul est effectué localement dans votre navigateur en JavaScript. Aucune directive, aucun domaine et aucune policy ne quittent votre machine ni n'est envoyé à un 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.

    Partager