Introduzione
La Content Security Policy (CSP) è un meccanismo di sicurezza del browser che aiuta a ridurre i rischi di Cross-Site Scripting (XSS) e di iniezione di contenuti. Il bundle Sonata-Extra per Symfony offre un modo efficace per implementare e gestire la CSP nella tua applicazione.
Comprendere la Content Security Policy
La CSP è trasmessa tramite un'intestazione di risposta e permette di controllare le risorse che la tua pagina web può caricare o eseguire. Specificando un elenco di fonti affidabili, puoi ridurre il rischio di iniezioni di contenuti dannosi.
Concetti chiave
- Direttive: Queste sono le regole che definiscono quali risorse possono essere caricate. Ogni direttiva controlla un tipo specifico di risorsa, come script, stili, immagini, ecc.
- Fonti: Sotto ogni direttiva, specifichi delle fonti (come degli URL) da cui la risorsa può essere caricata.
Tipi di sicurezza nel bundle Sonata-Extra
Nel pacchetto Sonata Extra, SECURITY_TYPES è una tabella costante che associa le direttive CSP alle loro chiavi di configurazione. Ecco una suddivisione di ogni direttiva:
default-src
Ripiego predefinito per la maggior parte delle direttive. Controlla le sorgenti predefinite per diversi tipi di contenuto.
script-src
Definisce le fonti valide per JavaScript. Le opzioni includono:
'self': Caricare gli script solo dalla stessa origine.'unsafe-inline': Consentire gli script online, anche se è meno sicuro.- URL specifiche: Definisci gli script esterni autorizzati.
style-src
Specifica le fonti valide per i fogli di stile. Opzioni simili a script-src.
img-src
Controlla le fonti da cui le immagini possono essere caricate.
connect-src
Limita le origini a cui puoi connetterti (ad esempio, WebSocket, richieste AJAX).
font-src
Definisce le sorgenti dei file dei font.
object-src
Controlla le fonti per elementi come <object>, <embed>, ecc.
media-src
Specifica le sorgenti per il caricamento dei media (audio e video).
frame-src
Determina le fonti valide per i frame e gli iframe.
Altre direttive
child-src,form-action,frame-ancestors,manifest-src,base-uri,sandbox,report-uri,worker-src,navigate-to: Questi affinano ulteriormente le politiche per casi d'uso specifici.
Implementazione della CSP nel bundle Sonata-Extra
Configurazione
Definite le vostre politiche CSP in un file di configurazione YAML sotto partitech_sonata_extra. Per esempio :
partitech_sonata_extra:
content_security_policy:
object-src:
- 'none'
script-src:
- 'self'
- 'unsafe-inline'
- 'https://external.script.url'
style-src:
- 'self'
- 'unsafe-inline'
- 'https://external.stylesheet.url'
font-src:
- 'self'
- 'https://cdnjs.cloudflare.com/'
- 'https://fonts.gstatic.com/'
Convalidare la politica prima del suo dispiegamento


Iniziate osservando le violazioni in modalità rapporto, poi restringete le fonti autorizzate. Una CSP non sostituisce né l’escape delle uscite né la convalida degli input.