Show Menu
ARGOMENTI×

Criteri sulla sicurezza dei contenuti (CSP)

L'obiettivo principale dei criteri sulla sicurezza dei contenuti (Content Security Policy, CSP) consiste nell'impedire attacchi di cross-site scripting (XSS). Questo accade quando il browser viene indotto a eseguire contenuti dannosi che sembrano avere origini affidabili, ma provengono in realtà da una posizione diversa. CSP consente al browser (per conto dell'utente) di verificare che lo script provenga effettivamente da una fonte attendibile.
I CSP si implementano aggiungendo Content-Security-Policy l'intestazione HTTP alle risposte del server. Per ulteriori informazioni sui CSP, consulta il sito Mozilla Developer Network: https://developer.mozilla.org/it-IT/docs/Web/HTTP/CSP

Problemi da superare

I sistemi di gestione dei tag sono progettati per caricare dinamicamente gli script. CSP è progettato per bloccare questi script caricati dinamicamente in quanto possono causare problemi di sicurezza.
Se desideri utilizzare Launch con il CSP, ci sono due sfide principali da superare:
  • L'origine della libreria Launch deve essere attendibile. Se questa condizione non è soddisfatta, la libreria Launch e gli altri file JavaScript richiesti vengono bloccati dal browser e non vengono caricati sulla pagina.
  • Gli script in linea devono essere consentiti. Se questa condizione non viene soddisfatta, le azioni della regola Codice personalizzato vengono bloccate sulla pagina e non vengono eseguite correttamente.
Se desideri utilizzare Launch e disporre di un CSP, è necessario risolvere entrambi i problemi senza contrassegnare in modo errato altri script come sicuri. L'aumento della sicurezza comporta l'aumento della quantità del lavoro svolto.

Origine attendibile

Se ospiti autonomamente la libreria, l'origine della libreria è probabilmente il tuo dominio. Puoi specificare se il dominio host è un'origine sicura come questa:
script-src 'self'
Se Adobe ospita la libreria (con l'host Gestito da Adobe), la libreria viene mantenuta su assets.adobedtm.com. In questo caso, vorresti che la tua policy si presentasse in questo modo:
script-src 'self' assets.adobedtm.com
È necessario specificare self come dominio sicuro in modo da non interrompere gli script già in fase di caricamento, ma è anche necessario elencare assets.adobedtm.com come attendibile, altrimenti la libreria Launch non verrà caricata sulla pagina.
Per maggiori informazioni sulle fonti attendibili, visita il sito Mozilla Developer Network .

Script in linea

Gli script in linea rappresentano una sfida per CSP in quanto non sono consentiti per impostazione predefinita. Sono disponibili due opzioni per consentire gli script in linea:
  • Consenti tutti gli script in linea (scelta meno sicura)
  • Consentito da nonce (scelta sicura)
La specifica CSP presenta dettagli per una terza opzione che utilizza gli hash, ma non è possibile utilizzare questo approccio con un TMS di qualsiasi tipo per una serie di motivi, alcuni dei quali molto complicati.

Scelta sicura: nonce

Questo metodo comporta la generazione di un nonce e l’aggiunta di tale collegamento al CSP e a ogni script in linea. Quando il browser riceve un'istruzione per caricare uno script in linea con un nonce, confronta il valore nonce con quello contenuto nell'intestazione CSP. Se corrisponde, lo script è caricato.
Questo nodo deve essere modificato con ogni nuovo caricamento di pagina.
Esiste un prerequisito molto importante: devi caricare la libreria Launch in modo asincrono . Questa operazione non funziona con un caricamento sincrono della libreria Launch (il che si traduce in errori della console e regole non eseguite correttamente).
Puoi aggiungere la tua nonce all'esempio precedente di CSP ospitato da Adobe in questo modo:
script-src 'self' assets.adobedtm.com 'nonce-2726c7f26c'
Devi poi dire indicare dove è possibile trovare il nonce. Viene utilizzato in Launch per caricare uno script in linea. Affinché Launch possa usare il nonce quando carica lo script, è necessario:
  1. Creare un elemento dati che fa riferimento al nonce (ovunque sia collocato nel livello dati).
  2. Configura l’Estensione core e specifica l’elemento dati utilizzato.
  3. Pubblica il tuo elemento dati e le modifiche all’Estensione core.
Una nota aggiuntiva: questa opzione gestisce solo il caricamento del codice personalizzato. Non gestisce le operazioni del codice personalizzato. È possibile scrivere codice personalizzato non conforme al CSP, nel qual caso il CSP ha la precedenza. Ad esempio, se utilizzi codice personalizzato per caricare uno script in linea aggiungendolo al DOM, Launch non è in grado di trovarlo o di aggiungere correttamente il nonce, per cui una particolare azione del codice personalizzato non funzionerà come previsto.

Protezione bassa - Consenti in linea

Se l'opzione precedente non funziona, è possibile indicare al CSP di consentire tutti gli script in linea. Si tratta dell'opzione meno sicura, ma è più facile da implementare e mantenere.
Anche in questo caso, supponendo che Adobe gestisca l'hosting e contrassegni il dominio assets.adobedtm.com come origine affidabile, il CSP avrà un aspetto simile al seguente:
script-src 'self' assets.adobedtm.com 'unsafe-inline'
Per ulteriori informazioni sull'abilitazione degli script in linea, consulta https://developer.mozilla.org/it-IT/docs/Web/HTTP/Headers/Content-Security-Policy/script-src sul sito MDN.