La Content Security Policy (CSP) è uno dei meccanismi più efficaci per mitigare gli attacchi di tipo Cross-Site Scripting (XSS), soprattutto quando la sola sanificazione degli input non è sufficiente. Introdotta come standard W3C e supportata dalla maggior parte dei browser moderni, la CSP consente di definire in modo preciso quali risorse possono essere caricate ed eseguite da una pagina web. In questo modo, anche se uno script malevolo riesce a essere iniettato nel DOM, il browser può bloccarne l’esecuzione.
Cos’è una Content Security Policy
La CSP è un header HTTP che specifica una serie di direttive. Ogni direttiva controlla un tipo di contenuto (script, immagini, fogli di stile, font, ecc.) e ne definisce le fonti consentite. Ad esempio, la direttiva script-src stabilisce da quali origini è possibile caricare ed eseguire script JavaScript.
Una configurazione di base potrebbe essere la seguente:
Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
Questa policy consente il caricamento di tutte le risorse solo dallo stesso dominio (‘self‘) e impedisce l’esecuzione di script provenienti da fonti esterne.
Esempi pratici e configurazioni avanzate
Per ambienti più complessi, è possibile estendere la policy con ulteriori direttive:
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'; frame-ancestors 'none'"
In questo esempio:
- script-src consente l’esecuzione di script solo dal dominio stesso e da un CDN specifico.
- object-src ‘none’ disabilita l’uso di plugin come Flash o Java applet.
- frame-ancestors ‘none’ impedisce che la pagina venga caricata all’interno di un iframe, proteggendo da attacchi di clickjacking.
Modalità Report-Only
Prima di applicare una policy restrittiva in produzione, è consigliabile testarla in modalità “report-only”. In questo modo, il browser non blocca le risorse non conformi, ma invia un report a un endpoint configurato:
Header set Content-Security-Policy-Report-Only "default-src 'self'; report-uri /csp-report-endpoint"
Questo approccio consente di monitorare eventuali violazioni senza compromettere l’esperienza utente.
Best practice
- Evitare l’uso di unsafe-inline e unsafe-eval, che vanificano gran parte della protezione offerta dalla CSP.
- Utilizzare nonce o hash per autorizzare script inline in modo sicuro.
- Combinare la CSP con una corretta sanificazione degli input e output.
- Monitorare i report CSP per identificare tentativi di attacco o configurazioni errate.
La Content Security Policy non sostituisce le altre misure di sicurezza, ma rappresenta un ulteriore livello di difesa fondamentale. Nell’articolo sull’XSS è stato evidenziato come gli script malevoli possano essere iniettati tramite input non sanificati; la CSP interviene proprio in questa fase, impedendone l’esecuzione anche in caso di vulnerabilità presenti nel codice.
More from Glossario
Phishing
Il phishing è una tecnica di attacco informatico che sfrutta l’inganno per rubare dati sensibili. Tramite email, SMS o siti …
Rootkit
Un rootkit è un insieme di strumenti malevoli che garantisce accesso nascosto e privilegiato a un sistema informatico. Agisce silenziosamente, …
Spyware
Gli spyware sono software "silenziosi" e pervasivi, rubano dati personali compromettendo la privacy. Imparare a riconoscerli e a difendersi è …
