Contenuto informativo basato su fonti istituzionali. L’applicazione concreta richiede una valutazione del contesto, del rischio e della normativa vigente.

Partire dal comportamento reale dell’applicazione

CSP controlla quali risorse una pagina può caricare o eseguire e alcune decisioni di sicurezza, ma resta una difesa in profondità. La specifica W3C chiarisce che non sostituisce validazione degli input e output encoding. Prima della policy servono quindi inventario di script, stili, immagini, font, frame, connessioni, form e worker.

default-src fornisce un fallback, ma le direttive specifiche rendono più leggibile il modello. object-src 'none', base-uri 'none' o 'self', form-action limitata e frame-ancestors esplicita riducono classi di rischio spesso trascurate. Ogni origine ammessa deve avere un motivo e un proprietario.

  • Elenco di origini e terze parti per tipo di risorsa
  • Funzioni necessarie in pagine pubbliche e autenticate
  • Direttive non coperte da default-src
  • Flussi di pagamento, login e moduli provati
  • Dipendenze dinamiche create dal JavaScript

Preferire nonce o hash alle autorizzazioni generiche

'unsafe-inline' indebolisce script-src perché consente codice inline non distinto. Le applicazioni dinamiche possono usare nonce casuali, imprevedibili e differenti per ogni risposta; contenuti statici possono usare hash mantenuti insieme alla build. La scelta dipende dall’architettura e deve evitare riuso o esposizione del nonce.

strict-dynamic può trasferire fiducia agli script caricati da uno script autorizzato, ma richiede comprensione del supporto e del modello di caricamento. Consentire interi domini o CDN non garantisce che ogni contenuto ospitato sia affidabile. La policy va costruita sul codice che può essere eseguito, non sul marchio del fornitore.

  • Nonce generato per risposta e applicato solo agli elementi previsti
  • Hash aggiornati dalla pipeline per contenuti statici
  • Riduzione progressiva di unsafe-inline e unsafe-eval
  • Origini precise invece di wildcard
  • Controllo delle catene di caricamento dinamico

Usare Report-Only come fase osservabile

Content-Security-Policy-Report-Only segnala le violazioni senza bloccare le risorse. È adatta per rilevare dipendenze non censite e differenze tra percorsi, ma i report contengono rumore prodotto da estensioni, malware nel browser o traffico non rappresentativo. Occorrono raccolta protetta, minimizzazione dei dati e criteri di triage.

La specifica CSP Level 3 considera report-uri deprecata a favore di report-to, collegata alla Reporting API. Il supporto effettivo deve essere verificato sui browser interessati; durante una transizione può essere necessario gestire più meccanismi senza inviare dettagli sensibili a destinatari non controllati.

  • Endpoint autenticato o protetto da abusi e limiti
  • Separazione tra violazioni del sito e delle estensioni
  • Campionamento e retention proporzionati
  • Dashboard per direttiva, pagina e origine bloccata
  • Nessuna autorizzazione automatica solo per eliminare un report

Passare all’enforcement per incrementi

Quando i flussi essenziali sono coperti, si può applicare una prima policy in enforcement e mantenere una policy più restrittiva in Report-Only. L’attivazione graduale per pagine o gruppi di utenti limita l’impatto e consente rollback rapido. Errori su login, form o pagamenti vanno trattati come incidenti di disponibilità.

La CSP entra nella definizione di done: nuove origini o inline script richiedono revisione, motivazione e test. I controlli automatici verificano che l’header sia presente e che le direttive minime non regrediscano; test funzionali e osservabilità confermano che l’applicazione continui a operare.

Domande frequenti

Report-Only protegge già dagli attacchi?+

No. Registra le violazioni ma non blocca le risorse. Serve per osservare e correggere la policy prima dell’enforcement, non come configurazione definitiva.

Perché evitare unsafe-inline?+

Perché autorizza l’esecuzione di script inline e riduce la capacità della CSP di distinguere codice previsto da contenuti iniettati. Nonce o hash permettono autorizzazioni più selettive.

Una CSP impedisce ogni XSS?+

No. Riduce impatto e possibilità di esecuzione in molti scenari, ma deve affiancare output encoding contestuale, sanitizzazione, framework configurato correttamente e sviluppo sicuro.

Fonti istituzionali

Approfondisci nel sito