Vai al contenuto principale
Sicurezza web UE: 10 passi verso un rating migliore · Parte 3

Content Security Policy: la difesa più importante che l'89% ignora

CSP mitiga XSS, injection e furto di dati — una sola riga di configurazione che l'89% dei siti UE non ha. Come implementarla senza rompere nulla.

· SiteGuardian

Parte 3 della serie "Sicurezza web UE: 10 passi verso un rating migliore"


Perché CSP è importante

Il Cross-Site Scripting (XSS) è la vulnerabilità più comune nelle applicazioni web da oltre 20 anni. Un attaccante inietta JavaScript nel vostro sito — tramite un modulo, un parametro URL, un commento. Il browser del visitatore esegue il codice perché non riesce a distinguerlo dal contenuto legittimo della pagina.

Content Security Policy (CSP) risolve questo problema: definite esplicitamente quali origini il browser può accettare per script, stili, immagini e altre risorse. Tutto il resto viene bloccato.

Tasso di adozione nell'UE: 10,8%. Nove siti su dieci non hanno un header CSP.


Cosa dicono i dati

Dal SiteGuardian Benchmark su oltre 700.000 siti web europei:

  • 10,8% ha un header CSP
  • I siti con security.txt hanno CSP nel 47% dei casi — 4,7 volte più spesso
  • Permissions-Policy (header correlato): solo 6,4%

Implementare CSP passo dopo passo

L'ostacolo principale: una CSP troppo restrittiva blocca il sito. Google Analytics smette di caricarsi, i video YouTube incorporati scompaiono, gli stili inline non funzionano più.

Passaggio 1: modalità Report-Only (non rompe nulla)

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

Il browser segnala le violazioni ma non blocca nulla. Vedete quali origini esterne usa il vostro sito senza rompere niente.

Passaggio 2: identificare le origini

Monitorate i report per 1-2 settimane. Origini tipiche che dovrete autorizzare:

  • Google Analytics: https://www.googletagmanager.com https://www.google-analytics.com
  • Google Fonts: https://fonts.googleapis.com https://fonts.gstatic.com
  • Video YouTube: https://www.youtube.com https://www.youtube-nocookie.com
  • Il vostro CDN: https://cdn.vostro-dominio.com

Passaggio 3: costruire la policy

Content-Security-Policy: default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data: https:; frame-src https://www.youtube-nocookie.com

Passaggio 4: attivare

Rimuovete -Report-Only dal nome dell'header. Testate il sito accuratamente.


Direttive principali

Direttiva Controlla Raccomandazione
default-src Fallback per tutto 'self'
script-src JavaScript 'self' + domini espliciti
style-src CSS 'self' 'unsafe-inline' (spesso necessario)
img-src Immagini 'self' data: https:
font-src Font 'self' + Google Fonts se necessario
connect-src XHR/Fetch 'self' + domini API
frame-src iframe Solo domini espliciti
object-src Flash/Java 'none' (sempre)
base-uri tag base 'self'

Nginx

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'" always;

Apache

Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'"

Errori comuni

1. unsafe-inline per gli script. script-src 'unsafe-inline' consente qualsiasi script inline — rendendo l'intera CSP inutile contro XSS. Usate nonce o hash al suo posto.

2. * come origine. default-src * consente tutto da ovunque. Non è una policy, è un placebo.

3. Partire troppo restrittivi. Iniziate sempre con Report-Only. Una CSP che rompe il sito e viene immediatamente disabilitata non protegge nessuno.


Contesto normativo

  • NIS2 Art. 21(2)(d) — sicurezza nello sviluppo e nella manutenzione dei sistemi informativi
  • GDPR Art. 32 — XSS può portare a violazioni dei dati (hijacking di sessione, furto di cookie)
  • PCI DSS 4.0 — il requisito 6.4.3 impone esplicitamente CSP per le pagine di pagamento

Verifica la tua CSP

SiteGuardian non solo rileva se un header CSP esiste, ma analizza le direttive alla ricerca di debolezze note:

https://siteguardian.io/scan


La prossima settimana nella Parte 4: DNSSEC — perché l'84% dei domini UE non ha protezione contro lo spoofing DNS.

Come si posiziona il tuo sito web?

SiteGuardian analizza il tuo dominio su sei dimensioni di sicurezza — gratis, istantaneo, senza registrazione.

Analizza il tuo sito web

Sicurezza web UE: 10 passi verso un rating migliore

Questo articolo fa parte di una serie settimanale sulle best practice di sicurezza web in UE.

SiteGuardian

2026-04-27

RSS