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.