Utilizzare Tag Manager con un criterio di sicurezza del contenuto

Il Criterio di sicurezza del contenuto (CSP) è uno standard di sicurezza web ampiamente supportato, pensato per prevenire alcuni tipi di attacchi basati su iniezione di dati, dando agli sviluppatori il controllo sulle risorse caricate dalle loro applicazioni. Utilizza questa guida per capire come implementare Google Tag Manager su siti che utilizzano un CSP.

Abilita il tag container per utilizzare CSP

Per utilizzare Google Tag Manager su una pagina con un CSP, quest'ultimo deve consentire l'esecuzione del codice del contenitore di Tag Manager. Questo codice è creato come codice JavaScript incorporato che inserisce lo script gtm.js. Ci sono vari modi per farlo, come l'utilizzo di un nonce o di un hash. Il metodo consigliato consiste nell'utilizzare un nonce, che dovrebbe essere un valore casuale non intuibile che il server genera individualmente per ogni risposta. Fornisci il valore nonce nell'istruzione script-src di Content-Security-Policy:

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

Poi utilizza la versione nonce-aware del codice del contenitore di Tag Manager incorporato. Imposta l'attributo nonce nell'elemento di script incorporato con questo 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 aggiunti alla pagina.

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

Se gli approcci consigliati nonce o hash non sono fattibili, è possibile abilitare lo script incorporato di Tag Manager aggiungendo l'istruzione 'unsafe-inline' alla sezione script-src del 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

Variabili JavaScript personalizzate

A causa del modo in cui vengono implementate le variabili JavaScript personalizzate, verranno valutate undefined in presenza di un CSP, a meno che non venga fornita l'istruzione 'unsafe-eval' nella sezione script-src del CSP.

script-src: 'unsafe-eval'

Modalità di anteprima

Per utilizzare la modalità di anteprima di Google Tag Manager, il CSP deve includere 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 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 le implementazioni di Google Analytics 4 (Google Analytics) utilizzando Google Signals, il CSP deve includere le seguenti direttive:

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>

Universal Analytics (Google Analytics)

Per utilizzare il tag Universal Analytics (Google Analytics), il CSP deve includere 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 Google Ads, il CSP deve includere le seguenti istruzioni:

Per connessioni sicure:

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

Per le connessioni non sicure:

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

Per utilizzare un tag di remarketing Google Ads, il CSP deve includere le seguenti 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

Floodlight

Gli utenti Floodlight possono attivare i CSP utilizzando le seguenti configurazioni. Sostituisci i valori <FLOODLIGHT-CONFIG-ID> con un ID inserzionista Floodlight specifico oppure con * 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 i beacon "script personalizzati" 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