Prima CSP per un sito vetrina
Parti dal modello rigido, aggiungi solo i tuoi CDN e la tua API in script-src e connect-src, poi pubblicala prima in Report-Only per vedere cosa verrebbe bloccato.
Componi una Content Security Policy partendo da modelli (rigido, analytics, permissivo), regola ogni direttiva, attiva Report-Only o upgrade-insecure-requests e copia l’header HTTP o il tag meta, con avvisi su unsafe-inline, unsafe-eval e caratteri jolly.
Genera un header di monitoraggio che non blocca le risorse.
Separa le sorgenti con spazi o virgole.
Il generatore di CSP ti aiuta a scrivere l’header Content-Security-Policy, che indica al browser da quali sorgenti il tuo sito può caricare script, stili, immagini e connessioni. È pensato per sviluppatori, integratori front-end e sistemisti che vogliono ridurre l’impatto di una falla XSS senza ricordare a memoria la sintassi delle direttive.
Una CSP (W3C Content Security Policy Level 3) è un elenco di direttive separate da punto e virgola, ognuna seguita dalle sue sorgenti: `default-src 'self'; script-src 'self' https://www.googletagmanager.com; object-src 'none'; base-uri 'self'`. Le parole chiave come `'self'`, `'none'` o `'unsafe-inline'` vanno tra apici singoli, host e schemi (`https:`, `data:`) no. Le direttive di caricamento (script-src, img-src, connect-src…) ereditano da default-src se mancano, ma base-uri, form-action e frame-ancestors no: per questo lo strumento ne segnala l’assenza.
Lo strumento unisce i valori inseriti, elimina duplicati e campi vuoti e produce tre output: la policy grezza, l’header `Content-Security-Policy` (o `Content-Security-Policy-Report-Only` in modalità di monitoraggio) e un tag `<meta http-equiv>`. Poi analizza la policy e avvisa se mancano default-src, object-src o base-uri, oppure se `'unsafe-inline'`, `'unsafe-eval'` o il jolly `*` indeboliscono la protezione. La direttiva upgrade-insecure-requests, senza valore, chiede al browser di caricare in HTTPS le risorse referenziate in HTTP.
Seleziona Rigido, Con analytics, Permissivo o Personalizzato e attiva se serve la modalità Report-Only per ottenere un header di monitoraggio non bloccante.
Compila default-src, script-src, style-src, img-src, connect-src, frame-ancestors e gli altri campi, separando le sorgenti con spazi o virgole, e attiva upgrade-insecure-requests se necessario.
Fai clic su «Genera la CSP», leggi gli avvisi, poi copia o esporta l’header HTTP, il tag meta o la policy grezza.
Parti dal modello rigido, aggiungi solo i tuoi CDN e la tua API in script-src e connect-src, poi pubblicala prima in Report-Only per vedere cosa verrebbe bloccato.
Il modello «Con analytics» aggiunge googletagmanager.com e google-analytics.com alle direttive giuste, da completare con i tag che carichi davvero.
Uno scanner segnala «Content-Security-Policy mancante» o «unsafe-inline consentito»: ricostruisci la policy e verifica che non resti alcun avviso prima di rimetterla in produzione.
Input
Modello: Personalizzato; Direttive: default-src = 'self', object-src = 'none', base-uri = 'self'; Modalità Report-Only: disattivataRisultato
Header HTTP: Content-Security-Policy: default-src 'self'; object-src 'none'; base-uri 'self'. Avvisi: nessunoNon corregge la vulnerabilità, ma limita molto ciò che uno script iniettato può fare bloccando gli script inline e i domini non autorizzati. Una CSP con 'unsafe-inline' in script-src perde gran parte di questa protezione. OWASP la descrive come difesa in profondità, in aggiunta al corretto escaping dei dati.
È preferibile l’header HTTP: si applica fin dall’inizio del caricamento e supporta tutte le direttive. Il tag meta è utile su un hosting statico senza accesso agli header, ma ignora frame-ancestors, report-uri e sandbox e protegge solo il contenuto che lo segue.
Aggiungi a script-src un nonce (`'nonce-valoreCasuale'`, rigenerato a ogni risposta e ripetuto nell’attributo nonce del tag) oppure l’hash dello script (`'sha256-…'`, Base64 dello SHA-256 del contenuto esatto). Puoi scrivere questi valori direttamente nel campo script-src; l’hash si calcola con un generatore SRI o di hash.
No. 'self' corrisponde solo alla stessa origine: stesso schema, host e porta. Per consentire cdn.example.com o tutti i sottodomini aggiungi esplicitamente `https://cdn.example.com` o `https://*.example.com`.
L’header Content-Security-Policy-Report-Only valuta la stessa policy senza bloccare nulla: il browser segnala le violazioni nella console e, se aggiungi una direttiva report-to o report-uri, le invia al tuo endpoint di raccolta. Così puoi mettere a punto la policy prima di passare all’header bloccante.
Sì, frame-ancestors è il sostituto moderno di X-Frame-Options e ha la precedenza nei browser che lo supportano: `frame-ancestors 'none'` equivale a DENY. Molti siti mantengono entrambi per i client più vecchi. Funziona solo nell’header HTTP, non in un tag meta.
Strumenti correlati
Strumenti simili o complementari a questo.
Genera HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP e X-Frame-Options per Nginx o Apache.
Genera l’attributo integrity SRI di uno script o di un foglio di stile da un contenuto, un file o un URL di CDN.
Analizza gli header HTTP per verificare sicurezza, cache, CORS e cookie di una risposta.
Impara a costruire una CSP progressiva, comprenderne le direttive ed evitare policy troppo permissive o che rompono il sito.
Comprendi i diversi livelli di sicurezza di un sito Web: HTTPS, header HTTP, CSP, SRI, autenticazione, password e integrità.
Scopri quando usare crittografia, hashing, HMAC o PBKDF2 per riservatezza, integrità, autenticazione e password.
Comprendi come si collegano OAuth 2.0, PKCE, JWT, JWK e JWKS: autorizzazione, token, chiavi pubbliche e verifica.