Générateur de Content Security Policy (CSP)
Construisez une directive Content-Security-Policy, exportez-la en en-tête, balise meta, config Nginx ou Apache, avec avertissements sur les réglages dangereux.
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests">
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests" always;
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests"
Importer une politique existante
Qu'est-ce que Générateur CSP ?
Ce générateur CSP vous aide à écrire une Content-Security-Policy qui restreint les origines d'où peuvent être chargés scripts, styles, images, frames et autres ressources. Il part d'une politique stricte, vous laisse modifier chaque directive et évalue le résultat en direct, en avertissant des faiblesses comme 'unsafe-inline', les sources de script génériques, object-src ou base-uri manquants et les mots-clés sans guillemets. Vous pouvez aussi importer une politique existante.
Comment utiliser Générateur CSP
- Partez de la politique de départ Stricte ou choisissez Tout effacer.
- Modifiez les sources de chaque directive, par ex.
'self' https://cdn.example.com. - Activez upgrade-insecure-requests et ajoutez un report-uri si besoin.
- Lisez l'évaluation de la politique et corrigez les constats de gravité élevée et moyenne.
- Copiez la politique en en-tête HTTP, balise meta, ligne Nginx ou Apache ; ou importez une politique existante pour l'analyser.
Exemple
Strict starter policy
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
Quand utiliser Générateur CSP
Utilisez-le pour rédiger ou relire une CSP avant de la déployer. Déployez les nouvelles politiques d'abord avec Content-Security-Policy-Report-Only et surveillez les violations : une politique stricte cassera les scripts inline et les widgets tiers que vous avez oublié d'autoriser. Les contrôles sont statiques et ne voient pas quels scripts vos pages chargent réellement.
Comment fonctionne Générateur CSP
Les directives sont sérialisées dans un ordre fixe sous la forme nom source source; …, en ignorant celles qui sont vides. L'évaluation applique des règles statiques proches du CSP Evaluator de Google : les mots-clés comme self ou none doivent être entre guillemets ; script-src (ou default-src en repli) sans nonce/hash contenant 'unsafe-inline', 'unsafe-eval', *, http:, https: ou data: est signalé ; object-src devrait valoir 'none' ; base-uri, frame-ancestors et form-action devraient être définis. La version balise meta omet frame-ancestors, report-uri, report-to et sandbox, que les navigateurs ignorent dans les balises meta.
Cas d'utilisation courants
- Créer une première CSP stricte pour un nouveau site.
- Auditer une politique copiée depuis la production à la recherche de 'unsafe-inline' et de jokers.
- Ajouter correctement un hôte d'analytique ou de CDN à script-src.
- Obtenir la ligne add_header Nginx exacte pour une politique.
Questions Fréquentes
Pourquoi 'unsafe-inline' est-il un problème ?
Il autorise n'importe quel script inline, y compris un script injecté par une faille XSS, ce qui annule l'objectif principal de la CSP. Utilisez plutôt des nonces ou des hachages.
En-tête ou balise meta ?
Préférez l'en-tête HTTP. Une balise meta ne peut pas utiliser frame-ancestors, report-uri ni sandbox, et ne s'applique qu'au contenu qui la suit.
Comment tester sans casser mon site ?
Envoyez la même politique en Content-Security-Policy-Report-Only ; les navigateurs signalent les violations dans la console sans rien bloquer.