Generatore CSP — Content Security Policy, con i punti critici segnalati
Generatore CSP
Spunti le direttive e le sorgenti, e questa pagina compone una Content-Security-Policy corretta su una riga per l'intestazione di risposta o per il tag <meta> — più le note che contano: quali direttive non ricorrono mai a default-src, quando un hash o un nonce sovrascrive silenziosamente unsafe-inline, e che cosa disattiva strict-dynamic. Un generatore di hash SHA-256/384/512 integrato trasforma script e stili inline in sorgenti 'sha256-…'. Tutto viene eseguito nel suo browser; nulla viene caricato.
Direttive di recupero — da dove può provenire il contenuto
Le direttive non spuntate sono semplicemente assenti dalla policy; una spunta senza sorgenti selezionate viene ignorata. 'none' annulla le altre caselle della sua riga. La casella sorgenti extra accetta un elenco separato da virgole: nomi host (cdn.example.com), schemi (https:), hash e nonce con o senza virgolette.
direttiva
'self'
'none'
'unsafe-inline'
'unsafe-eval'
'strict-dynamic'
data:
blob:
sorgenti extra
Direttive del documento — che cosa può fare la pagina stessa
Queste quattro non ricorrono a default-src: se le omette significa «nessuna restrizione», quindi una policy completa le imposta esplicitamente.
direttiva
'self'
'none'
sorgenti extra
Interruttori, nonce e segnalazione
nonce per script
report-uri
report-to
Policy
Nessuna policy ancora costruita. Spunti alcune sorgenti e prema Costruisci policy, oppure carichi l'esempio di base OWASP.
Generatore di hash per script e stili inline
Incolli il contenuto esatto tra <script> e </script> (o il blocco style) — byte per byte, senza a capo iniziale o finale — e scelga un algoritmo. Il risultato è la sorgente 'sha256-…' che CSP 3 si aspetta.
Qui compare l'output dell'hash.
Lo distribuisca come intestazione, non come tag meta, ogni volta che può. L'intestazione di risposta è la CSP completa: frame-ancestors, report-uri e report-to funzionano solo lì, e un'intestazione viene applicata prima che venga analizzato il primo byte dell'HTML. Il tag meta è la soluzione di ripiego per i file statici senza configurazione del server. Controlli le intestazioni che il suo sito invia realmente con il verificatore delle intestazioni di sicurezza, e analizzi i blocchi di risposta grezzi con il parser delle intestazioni HTTP.
Autotest Riesegue il costruttore su stati fissi: ordine delle sorgenti, mutua esclusione di 'none', la stringa dell'esempio base OWASP, quoting di nonce e hash, le note sull'assenza di fallback per base-uri / form-action / frame-ancestors, unsafe-inline sovrascritto da nonce o hash, note di strict-dynamic, nomi delle intestazioni Report-Only, esclusioni del tag meta, il generatore di hash confrontato con vettori SHA calcolati indipendentemente, e i percorsi negativi. Nulla viene inviato da nessuna parte.
Che cos'è una Content Security Policy?
In una frase: una CSP è una lista di autorizzazioni che il server invia con una pagina e che indica al browser esattamente da dove possono provenire script, stili, immagini e connessioni — così, anche se un attaccante inietta HTML, lo script iniettato non si carica, perché la sua sorgente non è nell'elenco.
da dove ciascun tipo di contenuto può essere caricato
sì — una direttiva non spuntata eredita default-src
Direttive del documento
base-uri, form-action, frame-ancestors, sandbox
che cosa può fare la pagina stessa (essere incorporata, inviare moduli, risolvere URL relativi)
no — ciascuna va impostata esplicitamente
Segnalazione e varie
report-uri, report-to, upgrade-insecure-requests
dove vanno le segnalazioni di violazione, e l'aggiornamento degli URL legacy
no (non sono direttive di recupero)
I punti più critici, un paragrafo ciascuno
'unsafe-inline' contro hash e nonce. Se una direttiva contiene un nonce o un qualsiasi hash, CSP 3 stabilisce che 'unsafe-inline' viene ignorato — resta lì solo per i browser molto vecchi. Per questo «abbiamo aggiunto un nonce e mantenuto unsafe-inline per sicurezza» significa che i browser moderni applicano il nonce. Il generatore segnala la combinazione, così diventa una decisione e non un errore.
strict-dynamic disattiva la sua lista di autorizzazioni. Con strict-dynamic in script-src, host, schemi, 'self', 'unsafe-inline' e data: vengono ignorati per gli script; contano solo nonce e hash, e gli script che essi caricano possono caricare ulteriori script. È il modo moderno di far funzionare gli script di caricamento — ma rende decorativo il resto della lista di script-src.
I tag meta sono di seconda classe.frame-ancestors, report-uri e report-to vengono ignorati in <meta http-equiv>. Il generatore mostra quali parti della sua policy non verrebbero applicate in silenzio.
Errori comuni
Partire da default-src * con una lunga lista di eccezioni. Proceda nel verso opposto: un default-src 'self' stretto, poi allarghi solo le direttive che lo richiedono. Le policy strette falliscono in modo evidente durante i test; quelle larghe falliscono in silenzio per sempre.
Distribuire script-src 'unsafe-inline' 'unsafe-eval' e considerarlo completato. Una policy del genere blocca quasi nulla di ciò che un attacco XSS vuole fare. Metta nonce o hash sui suoi script, aggiunga strict-dynamic e tenga report-only attivo in produzione per individuare le regressioni.
Dimenticare che default-src non copre tutto.base-uri, form-action, frame-ancestors e sandbox non hanno alcun fallback — la lacuna più citata nei deployment CSP reali.
Testare subito in modalità applicata. Esegua in Report-Only con un collector per una settimana, legga le segnalazioni, poi passi all'applicazione. Una policy che blocca il checkout è peggio di nessuna policy.
Calcolare gli hash con gli spazi in modo diverso. Un hash copre i byte esatti del blocco inline; un passaggio di build «utile» che elimina i ritorni a capo finali cambia ogni hash. Generi gli hash da ciò che viene distribuito, non dal sorgente.
Domande frequenti
Mi serve default-src se elenco ogni direttiva? No, ma mantenerlo come base minima è una buona pratica: le nuove direttive di recupero nei browser futuri assumeranno così la sua base invece di «consentito».
Che cosa fa davvero upgrade-insecure-requests? Dice al browser di riscrivere ogni URL http:// che la pagina caricherebbe — immagini, stili, fetch — in https:// prima di richiederlo. È uno strumento di migrazione; lo stato finale sono pagine senza alcun URL http://.
Nonce o hash? Nonce quando controlla la risposta del server (un valore casuale per ogni risposta, sia nell'intestazione sia in ogni tag script). Hash quando l'HTML è statico o in cache. Mai un nonce statico — un nonce che non cambia è solo unsafe-inline con qualche passaggio in più.
Perché la policy viene consegnata ma le violazioni non arrivano? Controlli se è in Report-Only (solo segnalazioni), se report-uri punta a un collector che accetta POST, e se ha impostato anche il meccanismo Reporting-Endpoints / Report-To richiesto dalla moderna direttiva report-to.
Una CSP sostituisce altre protezioni? No. È un livello: continui a eseguire l'escape dell'output, a tenere i cookie dietro HttpOnly e Secure, e a mantenere HSTS. Il verificatore delle intestazioni di sicurezza di questo sito valuta l'insieme completo.