Utiliser Tag Manager avec une Content Security Policy

Content Security Policy (CSP) est une norme de sécurité Web largement acceptée qui permet d'empêcher certains types d'attaques par injection en offrant aux développeurs le contrôle des ressources chargées par leurs applications. Ce guide vous explique comment déployer Google Tag Manager sur les sites qui utilisent une CSP.

Activer le tag conteneur pour utiliser CSP

Pour utiliser Google Tag Manager sur une page avec un CSP, celui-ci doit autoriser l'exécution du code de votre conteneur Tag Manager. Ce code est conçu comme un code JavaScript intégré qui injecte le script gtm.js. Il existe plusieurs façons de procéder, par exemple l'utilisation d'un nonce ou d'un hachage. La méthode recommandée consiste à utiliser un nonce, qui doit être une valeur aléatoire impossible à deviner que le serveur génère individuellement pour chaque réponse. Indiquez la valeur nonce dans la directive script-src Content-Security-Policy:

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

Utilisez ensuite la version non compatible du code du conteneur Tag Manager intégré. Définissez l'attribut nonce de l'élément de script intégré sur la même valeur:

<!-- 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 propage ensuite le nonce à tous les scripts qu'il ajoute à la page.

Il existe d'autres approches pour permettre l'exécution d'un script intégré, comme fournir le hachage du script intégré dans la CSP.

Si les approches nonce ou de hachage recommandées ne sont pas applicables, vous pouvez activer le script intégré Tag Manager en ajoutant l'instruction 'unsafe-inline' à la section script-src du fournisseur de services cloud.

Les directives suivantes sont nécessaires dans CSP pour utiliser cette approche:

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

Variables JavaScript personnalisées

En raison de la façon dont les variables JavaScript personnalisées sont implémentées, elles renvoient l'état undefined en présence d'une CSP, sauf si l'instruction 'unsafe-eval' est fournie dans la section script-src de CSP.

script-src: 'unsafe-eval'

Mode aperçu

Pour utiliser le mode Aperçu de Google Tag Manager, la CSP doit inclure les directives suivantes:

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)

Pour utiliser la balise Google Analytics 4 (Google Analytics), le CSP doit inclure les directives suivantes:

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

Pour les déploiements de Google Analytics 4 (Google Analytics) à l'aide de signaux Google, le CSP doit inclure les directives suivantes:

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)

Pour utiliser la balise Universal Analytics (Google Analytics), la CSP doit inclure les directives suivantes:

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

Pour utiliser une balise de conversion Google Ads, le CSP doit inclure les directives suivantes:

Pour des connexions sécurisées:

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

Pour les connexions non sécurisées:

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

Pour utiliser une balise de remarketing Google Ads, le CSP doit inclure les instructions suivantes.

Pour des connexions sécurisées:

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

Pour les connexions non sécurisées:

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

Floodlight

Les utilisateurs Floodlight peuvent activer les CSP à l'aide des configurations suivantes. Remplacez les valeurs <FLOODLIGHT-CONFIG-ID> par une référence annonceur Floodlight spécifique ou * pour autoriser n'importe quelle référence annonceur:

Pour tous les utilisateurs:

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

Pour les balises de scripts personnalisés dans Tag Manager:

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

Pour les tags d'image:

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

Pour le mode Consentement:

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