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.
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
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

nonce per script
report-uri
report-to
Nessuna policy ancora costruita. Spunti alcune sorgenti e prema Costruisci policy, oppure carichi l'esempio di base OWASP.
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.
I tre gruppi di direttive
GruppoEsempiControllaRicorre a default-src?
Direttive di recuperoscript-src, style-src, img-src, connect-src, font-src, object-src, frame-src, worker-src, media-src, manifest-srcda dove ciascun tipo di contenuto può essere caricatosì — una direttiva non spuntata eredita default-src
Direttive del documentobase-uri, form-action, frame-ancestors, sandboxche cosa può fare la pagina stessa (essere incorporata, inviare moduli, risolvere URL relativi)no — ciascuna va impostata esplicitamente
Segnalazione e variereport-uri, report-to, upgrade-insecure-requestsdove vanno le segnalazioni di violazione, e l'aggiornamento degli URL legacyno (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.