Utiliser Tag Manager avec une Content Security Policy

Content Security Policy (CSP) est une norme de sécurité Web largement acceptée qui vise à empêcher certains types d'attaques par injection en permettant aux développeurs de contrôler les ressources chargées par leurs applications. Consultez ce guide pour découvrir comment déployer Google Tag Manager sur des sites qui utilisent un CSP.

Activer la balise de conteneur pour utiliser le CSP

Pour utiliser Google Tag Manager sur une page avec une CSP, celle-ci doit autoriser l'exécution du code de votre conteneur Tag Manager. Ce code est créé en tant que code JavaScript intégré qui injecte le script gtm.js. Il existe plusieurs façons de procéder, par exemple en utilisant un nonce ou 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. Fournissez 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;
connect-src www.googletagmanager.com

Utilisez ensuite la version compatible avec le nonce du code du conteneur Tag Manager intégré. Définissez l'attribut nonce de l'élément de script intégré sur cette 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 propagera 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 le CSP.

Si les approches nonce ou hachage recommandées ne sont pas possibles, vous pouvez activer le script intégré Tag Manager en ajoutant la directive 'unsafe-inline' à la section script-src du CSP.

Les directives suivantes sont requises dans le CSP pour utiliser cette approche:

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

Variables JavaScript personnalisées

En raison de la manière dont les variables JavaScript personnalisées sont implémentées, elles seront évaluées à undefined en présence d'un CSP, sauf si la directive 'unsafe-eval' est indiquée dans la section script-src du 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), la 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>
frame-src   https://td.doubleclick.net

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

Pour les connexions sécurisées:

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

Pour les connexions non sécurisées:

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

Pour utiliser une balise de remarketing Google Ads, le CSP doit inclure les directives 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://td.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 td.doubleclick.net

Pour utiliser les balises de données utilisateur Google Ads lors de l'exécution dans des contextes sécurisés, le CSP doit inclure les directives suivantes:

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

Le balise de données utilisateur Google Ads ne s'exécute pas dans des contextes non sécurisés. Par conséquent, la configuration du CSP dans ces cas n'est pas applicable.

Floodlight

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

Pour tous les utilisateurs:

img-src https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net
frame-src https://td.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