Utilizzare Tag Manager con un criterio di sicurezza del contenuto

Criterio di sicurezza del contenuto (CSP) è un'applicazione ampiamente supportata standard di sicurezza mirato a prevenire determinati tipi di attacchi basati sull'iniezione dando agli sviluppatori il controllo sulle risorse caricate dalle loro applicazioni. Utilizza questa guida per capire come implementare Google Tag Manager sui siti che usa un CSP.

Abilita il tag contenitore per utilizzare CSP

Per utilizzare Google Tag Manager in una pagina con un CSP, quest'ultimo deve consentire l'utilizzo di dell'esecuzione del codice del contenitore di Tag Manager. Questo codice è incorporato Codice JavaScript che inserisce lo script gtm.js. Esistono diversi modi per farlo come l'uso di un nonce o di un hash. Il metodo consigliato consiste nell'utilizzare una nonce, che dovrebbe essere un valore casuale non decifrabile generato dal server singolarmente per ogni risposta. Fornisci il valore nonce nel campo Content-Security- Istruzione del criterio script-src:

Content-Security-Policy:
script-src 'nonce-{SERVER-GENERATED-NONCE}';
img-src www.googletagmanager.com;
connect-src www.googletagmanager.com

Quindi, utilizza la versione nonce-aware del codice del contenitore incorporato di Tag Manager. Imposta l'attributo nonce nell'elemento di script incorporato su questo stesso valore:

<!-- Google Tag Manager -->
<script nonce='{SERVER-GENERATED-NONCE}'>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;var n=d.querySelector('[nonce]');
n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

Tag Manager propaga quindi il nonce a tutti gli script che aggiunge della pagina.

Esistono altri approcci per abilitare l'esecuzione di uno script in linea, ad esempio: come fornire l'hash dello script incorporato nel CSP.

Se gli approcci nonce o hash consigliati non sono attuabili, è possibile attiva lo script incorporato di Tag Manager aggiungendo 'unsafe-inline' alla sezione script-src di CSP.

Per utilizzare questo approccio, nel CSP sono necessarie le seguenti direttive:

script-src: 'unsafe-inline' https://www.googletagmanager.com
img-src: www.googletagmanager.com
connect-src www.googletagmanager.com

Variabili JavaScript personalizzate

Grazie al modo in cui vengono implementate le variabili JavaScript personalizzate, vengono utilizzate restituirà undefined in presenza di un CSP, a meno che 'unsafe-eval' è fornita nella sezione script-src di CSP.

script-src: 'unsafe-eval'

Modalità di anteprima

Per utilizzare la modalità di anteprima di Google Tag Manager, il CSP deve includere i campi le seguenti istruzioni:

script-src: https://googletagmanager.com https://tagmanager.google.com
style-src: https://googletagmanager.com https://tagmanager.google.com https://fonts.googleapis.com
img-src: https://googletagmanager.com https://ssl.gstatic.com https://www.gstatic.com
font-src: https://fonts.gstatic.com data:

Google Analytics 4 (Google Analytics)

Per utilizzare il tag Google Analytics 4 (Google Analytics), il CSP deve includere i campi le seguenti istruzioni:

script-src:  https://*.googletagmanager.com
img-src:     https://*.google-analytics.com https://*.googletagmanager.com
connect-src: https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com

Per i deployment di Google Analytics 4 (Google Analytics) che utilizzano Google Signals, il parametro CSP deve includere le seguenti istruzioni:

script-src:  https://*.googletagmanager.com
img-src:     https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com
             https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD>
connect-src: https://*.google-analytics.com https://*.analytics.google.com
             https://*.googletagmanager.com https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD>
frame-src:   https://td.doubleclick.net

Universal Analytics (Google Analytics)

Per utilizzare il tag Universal Analytics (Google Analytics), il CSP deve includere il parametro le seguenti istruzioni:

script-src: https://www.google-analytics.com https://ssl.google-analytics.com
img-src: https://www.google-analytics.com
connect-src: https://www.google-analytics.com

Per utilizzare un tag di conversione di Google Ads, il CSP deve includere quanto segue. :

Per connessioni sicure:

script-src: https://www.googleadservices.com https://www.google.com https://www.googletagmanager.com
img-src: https://googleads.g.doubleclick.net https://www.google.com https://google.com
frame-src: https://www.googletagmanager.com https://td.doubleclick.net

Per le connessioni non sicure:

script-src: www.googleadservices.com www.google.com www.googletagmanager.com
img-src: googleads.g.doubleclick.net www.google.com google.com

Per utilizzare un tag di remarketing Google Ads, il CSP deve includere quanto segue. istruzioni.

Per connessioni sicure:

script-src: https://www.googleadservices.com https://googleads.g.doubleclick.net https://www.google.com
img-src: https://www.google.com https://google.com
frame-src: https://bid.g.doubleclick.net https://td.doubleclick.net

Per le connessioni non sicure:

script-src: www.googleadservices.com googleads.g.doubleclick.net www.google.com
img-src: www.google.com google.com
frame-src: bid.g.doubleclick.net td.doubleclick.net

Per utilizzare i beacon dei dati utente di Google Ads in contesti sicuri, CSP deve includere le seguenti istruzioni:

script-src: https://www.googletagmanager.com
frame-src: https://www.googletagmanager.com

Il beacon dei dati utente di Google Ads non viene eseguito in contesti non sicuri, pertanto CSP in questi casi non è applicabile.

Floodlight

Gli utenti Floodlight possono attivare i CSP utilizzando le seguenti configurazioni. Sostituisci <FLOODLIGHT-CONFIG-ID> valori con un valore specifico ID inserzionista Floodlight o * per consentire qualsiasi ID inserzionista:

Per tutti gli utenti:

img-src: https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net
frame-src: https://td.doubleclick.net

Per gli "script personalizzati" beacon in Tag Manager:

frame-src: https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net

Per i tag immagine:

img-src: https://ad.doubleclick.net

Per la modalità di consenso:

img-src: https://ade.googlesyndication.com