Supporto di Content Security Policy (CSP)
I Criteri sulla sicurezza dei contenuti (CSP) sono una funzione di sicurezza che aiuta a prevenire attacchi alla vulnerabilità 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. I CSP consentono al browser di verificare (per conto dell’utente) che lo script provenga effettivamente da una sorgente affidabile.
I CSP sono implementati aggiungendo un’intestazione HTTP Content-Security-Policy
alle risposte del server o aggiungendo un elemento <meta>
configurato nella sezione <head>
dei file HTML.
I tag in Adobe Experience Platform sono un sistema di gestione dei tag progettato per caricare dinamicamente gli script sul sito web. I CSP predefiniti bloccano questi script caricati dinamicamente per potenziali problemi di sicurezza. In questo documento vengono fornite istruzioni su come configurare i criteri CSP per consentire gli script caricati in modo dinamico dai tag.
Se desideri utilizzare i tag con un criterio CSP, ci sono due sfide principali da superare:
- L’origine della libreria tag deve essere attendibile. Se questa condizione non è soddisfatta, la libreria tag 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.
Un livello di sicurezza più elevato richiede una maggiore quantità di lavoro da parte del creatore dei contenuti. Se desideri utilizzare i tag ed è attivo un CSP, è necessario risolvere entrambe queste problematiche senza che altri script vengano erroneamente contrassegnati come sicuri. Il resto del presente documento fornisce indicazioni su come raggiungere questo obiettivo.
Aggiungere i tag come origine affidabile
Quando utilizzi CSP, devi includere tutti i domini affidabili nel valore dell’intestazione Content-Security-Policy
. Il valore da fornire per i tag varia a seconda del tipo di hosting utilizzato.
Hosting autonomo
Se utilizzi l’hosting autonomo per la libreria, la sorgente della build sarà probabilmente il dominio di tua proprietà. Puoi specificare che il dominio host è una sorgente affidabile utilizzando la seguente configurazione:
Intestazione HTTP
Content-Security-Policy: script-src 'self'
Tag HTML <meta>
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">
Hosting gestito da Adobe
Se utilizzi un hosting gestito da Adobe, la build viene mantenuta su 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 tag non verrà caricata sulla pagina. In questo caso, utilizza la configurazione seguente:
Intestazione HTTP
Content-Security-Policy: script-src 'self' assets.adobedtm.com
Tag HTML <meta>
Esiste un prerequisito molto importante: devi caricare la libreria tag in modo asincrono. Questa operazione non funziona con un caricamento sincrono della libreria tag (il che si traduce in errori della console e regole non eseguite correttamente).
<meta http-equiv="Content-Security-Policy" content="script-src 'self' assets.adobedtm.com">
Occorre specificare self
come dominio sicuro in modo che eventuali script già in fase di caricamento continuino a funzionare, ma occorre inoltre indicare assets.adobedtm.com
come sicuro, altrimenti la build della libreria non verrà caricata sulla pagina.
Script in linea
I CSP disattivano gli script in linea per impostazione predefinita e devono pertanto essere configurati manualmente per consentirli. Sono disponibili due opzioni per consentire gli script in linea:
- Consenti per nonce (sicurezza maggiore)
- Consenti tutti gli script in linea (sicurezza minore)
Consentire per nonce nonce
Questo metodo comporta la generazione di un nonce di crittografia e l’aggiunta di quest’ultimo ai CSP e a ogni script in linea sul sito. Quando il browser riceve l’istruzione di caricare uno script in linea che contiene un nonce, esso confronta il valore del nonce con il contenuto dell’intestazione dei CSP. Se corrisponde, lo script è caricato. Questo nonce deve essere modificato con ogni nuovo caricamento di pagina.
Gli esempi seguenti mostrano come aggiungere il nonce alla configurazione CSP per un host gestito da Adobe. Se utilizzi l’hosting autonomo, puoi escludere assets.adobedtm.com
.
Intestazione HTTP
Content-Security-Policy: script-src 'self' assets.adobedtm.com 'nonce-2726c7f26c'
Tag HTML <meta>
<meta http-equiv="Content-Security-Policy" content="script-src 'self' assets.adobedtm.com 'nonce-2726c7f26c'">
Una volta configurati l’intestazione o il tag HTML, è necessario indicare al tag dove trovare il nonce quando viene caricato uno script in linea. Per fare in modo che un tag utilizzi il nonce durante il caricamento dello script, esegui le seguenti operazioni:
- Crea un elemento dati che faccia riferimento alla posizione del nonce all’interno del livello dati.
- Configura l’Estensione core e specifica l’elemento dati utilizzato.
- Pubblica il tuo elemento dati e le modifiche all’Estensione core.
Consentire tutti gli script in linea unsafe-inline
In caso tu non possa utilizzare i nonce, puoi configurare i CSP in modo che consentano tutti gli script in linea. Si tratta dell’opzione meno sicura, ma è più facile da implementare e mantenere.
Gli esempi seguenti mostrano come consentire tutti gli script in linea nell’intestazione CSP.
Hosting autonomo
Imposta le seguenti configurazioni se utilizzi l’hosting autonomo:
Intestazione HTTP
Content-Security-Policy: script-src 'self' 'unsafe-inline'
Tag HTML <meta>
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'">
Hosting gestito da Adobe
Imposta le seguenti configurazioni se utilizzi un hosting gestito da Adobe:
Intestazione HTTP
Content-Security-Policy: script-src 'self' assets.adobedtm.com 'unsafe-inline'
Tag HTML <meta>
<meta http-equiv="Content-Security-Policy" content="script-src 'self' assets.adobedtm.com 'unsafe-inline'">
Passaggi successivi
Una volta letto questo documento, sarai in grado di configurare l’intestazione CSP per accettare il file della libreria tag e gli script in linea.
Come ulteriore misura di sicurezza, puoi scegliere inoltre di utilizzare l’integrità della sottorisorsa (SRI) per convalidare le build della libreria recuperate. Tuttavia, questa funzione presenta alcune limitazioni importanti se utilizzata con sistemi di gestione dei tag come tag. Per ulteriori informazioni, consulta la guida sulla compatibilità SRI in Platform.