Come correggere un header Content-Security-Policy (CSP) mancante | Scanthra

Scanthra · 7 min di lettura · Aggiornato Maggio 2026

Maggio 2026
TL;DR: Un header Content-Security-Policy (CSP) mancante è il problema rilevato più comune nei report Scanthra. Permette a un singolo script iniettato di eseguire qualsiasi codice nel browser del tuo visitatore. Puoi aggiungere un CSP di partenza sicuro in meno di 10 minuti — senza rompere il tuo sito — distribuendolo in modalità report-only prima.

Cos'è l'header Content-Security-Policy?

CSP (Content Security Policy) è un'intestazione di risposta che dice al browser esattamente quali sorgenti di script, stili, immagini e frame è autorizzato a caricare. Se qualcosa sulla pagina cerca di caricare uno script da un dominio non nella tua lista di consentiti, il browser rifiuta. È come una lista ospiti per il buttafuori all'ingresso.

Senza CSP, qualsiasi tag <script> iniettato — da un plugin compromesso, un errore in un widget di terze parti, un XSS memorizzato in un commento — esegue con pieno accesso ai cookie, ai dati dei moduli e alla sessione dei tuoi visitatori. Con un CSP rigoroso, la stessa iniezione viene bloccata silenziosamente e registrata.

Perché questo è importante per una piccola impresa

Due esempi reali che vediamo ogni settimana nei report Scanthra:

CSP è anche esplicitamente raccomandato da OWASP (standard di sicurezza delle app), atteso dalla maggior parte dei questionari di cyber assicurazione, e — per le imprese UE — una parte ragionevole delle "misure tecniche adeguate" richieste dal GDPR Articolo 32 e dalla Direttiva NIS2 (direttiva UE sulla cybersecurity).

Il rollout sicuro: prima la modalità report-only

Il motivo principale per cui i piccoli siti evitano CSP è la paura di rompere il layout. La soluzione: distribuisci prima Content-Security-Policy-Report-Only. Il browser controlla la policy e segnala le violazioni, ma non le applica. Monitora i log per una settimana, correggi ciò che viene bloccato, poi passa all'header di applicazione.

Una policy di partenza che funziona per la maggior parte dei siti

Content-Security-Policy-Report-Only:
  default-src 'self';
  script-src 'self' https://www.googletagmanager.com https://www.google-analytics.com;
  style-src  'self' 'unsafe-inline' https://fonts.googleapis.com;
  font-src   'self' https://fonts.gstatic.com;
  img-src    'self' data: https:;
  connect-src 'self' https://www.google-analytics.com;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self';
  upgrade-insecure-requests

Questa policy assume che tu serva tutto dal tuo dominio più Google Analytics + Google Fonts. Quasi ogni sito WordPress, Shopify o statico si adatta qui con piccole modifiche. Rimuovi o sostituisci le righe GA/Fonts se non le usi.

Come distribuire su nginx

add_header Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests" always;

Come distribuire su Apache

Header always set Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests"

Come distribuire su Cloudflare

Nella tua dashboard Cloudflare vai su Rules → Transform Rules → HTTP Response Header Modification. Aggiungi un header chiamato Content-Security-Policy-Report-Only con la policy sopra come valore. Questa è l'opzione più veloce se non hai accesso shell al tuo server.

Come distribuire su WordPress

Installa un plugin per gli header come Headers Security Advanced & HSTS WP o aggiungi gli header tramite il pannello del tuo hosting. Evita di impostare CSP nel functions.php del tema — molti temi caricano asset WP-admin o del block editor dinamicamente e questo rompe l'esperienza dell'editor.

Insidie comuni

Da report-only all'applicazione

Dopo una settimana di report-only senza nuove violazioni sul traffico reale, rinomina l'header da Content-Security-Policy-Report-Only a Content-Security-Policy. La policy è ora applicata. Mantieni l'endpoint di segnalazione — catturerai nuove violazioni nel momento in cui un aggiornamento di plugin introduce uno script imprevisto.

Come Scanthra rileva questo

Il nostro modulo Security Headers esegue un singolo GET alla tua homepage e legge le intestazioni di risposta. Se Content-Security-Policy è mancante, debole, o contiene unsafe-eval, otterrai un problema rilevato con gravità, descrizione in linguaggio semplice e correzione da copiare e incollare — stessa forma di questo articolo.

Vuoi sapere se il tuo sito ha questo problema?

Scanthra esegue un controllo passivo e discreto, e ti invia un report PDF in linguaggio semplice.

Analizza il tuo sito gratis