Utilizzare Tag Manager con un criterio di sicurezza del contenuto

Il Criterio di sicurezza del contenuto (CSP) è uno standard di sicurezza web ampiamente supportato progettato per impedire determinati tipi di attacchi basati su attacco di iniezione offrendo agli sviluppatori il controllo sulle risorse caricate dalle loro applicazioni. Consulta questa guida per scoprire come implementare Google Tag Manager sui siti che utilizzano un CSP.

Consenti al tag contenitore di utilizzare il CSP

Per utilizzare Google Tag Manager in una pagina con un CSP, il CSP deve consentire l'esecuzione del codice del contenitore di Tag Manager. Questo codice viene creato come codice JavaScript in linea che inietta lo script gtm.js. Esistono diversi modi per farlo, ad esempio l'utilizzo di un nonce o di un hash. Il metodo consigliato è utilizzare un nonce, che deve essere un valore casuale e non deducibile generato individualmente dal server per ogni risposta. Specifica 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;
connect-src www.googletagmanager.com

Utilizza quindi la versione con conoscenza del nonce del codice del contenitore Tag Manager in linea. Imposta l'attributo nonce nell'elemento script in linea sullo 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 aggiunti alla pagina.

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

Se gli approcci nonce o hash consigliati non sono attuabili, è 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
connect-src www.googletagmanager.com

Variabili JavaScript personalizzate

A causa del modo in cui vengono implementate le variabili JavaScript personalizzate, valuteranno 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 direttive:

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 direttive:

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) che utilizzano 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>
frame-src   https://td.doubleclick.net

Per utilizzare un tag di conversione Google Ads, il CSP deve includere le seguenti direttive:

Per le 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 https://pagead2.googlesyndication.com
frame-src https://www.googletagmanager.com https://td.doubleclick.net
connect-src https://pagead2.googlesyndication.com

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 pagead2.googlesyndication.com
connect-src pagead2.googlesyndication.com

Per utilizzare un tag di remarketing di Google Ads, il CSP deve includere le seguenti direttive.

Per le 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://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 td.doubleclick.net

Per utilizzare i beacon dei dati utente di Google Ads quando vengono eseguiti in contesti sicuri, il CSP deve includere le seguenti direttive:

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 la configurazione del CSP in questi casi non è applicabile.

Floodlight

Gli utenti di Floodlight possono attivare i fornitori di servizi cloud utilizzando le seguenti configurazioni. Sostituisci i valori <FLOODLIGHT-CONFIG-ID> con un ID inserzionista Floodlight specifico o 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