La Content Security Policy (CSP) est une norme de sécurité Web largement acceptée visant à empêcher certains types d'attaques par injection en donnant aux développeurs le contrôle des 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 un CSP, celui-ci doit autoriser l'exécution de votre code de 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 nécessaires dans le CSP pour utiliser cette approche:
Directive | Contenu |
---|---|
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.
Directive | Contenu |
---|---|
script-src | "unsafe-eval" |
Mode aperçu
Pour utiliser le mode Aperçu de Google Tag Manager, le CSP doit inclure les directives suivantes:
Directive | Contenu |
---|---|
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 | Données https://fonts.gstatic.com: |
Google Analytics 4 (Google Analytics)
Pour utiliser la balise Google Analytics 4 (Google Analytics), le CSP doit inclure les directives suivantes:
Directive | Contenu |
---|---|
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) utilisant des signaux Google, le CSP doit inclure les directives suivantes:
Directive | Contenu |
---|---|
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 https://www.googletagmanager.com |
Google Ads
Pour utiliser une balise de conversion, de remarketing ou de Conversion Linker Google Ads, le CSP doit inclure les directives suivantes:
Directive | Contenu |
---|---|
script-src | https://www.googleadservices.com https://www.google.com https://www.googletagmanager.com https://pagead2.googlesyndication.com https://googleads.g.doubleclick.net |
img-src | https://www.googletagmanager.com https://googleads.g.doubleclick.net https://www.google.com https://google.com https://www.google.com.<TLD> https://pagead2.googlesyndication.com |
frame-src | https://www.googletagmanager.com https://td.doubleclick.net |
connect-src | https://pagead2.googlesyndication.com https://www.googleadservices.com https://www.google.com https://google.com |
Balise de données utilisateur Google Ads
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:
Directive | Contenu |
---|---|
script-src | https://www.googletagmanager.com |
frame-src | https://www.googletagmanager.com |
connect-src | https://google.com https://www.google.com |
Le balise de données utilisateur Google Ads ne s'exécute pas dans des contextes non sécurisés. La configuration du CSP dans ces cas n'est donc pas applicable.
Floodlight
Les utilisateurs de 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:
Directive | Contenu |
---|---|
img-src | https://ad.doubleclick.net https://ade.googlesyndication.com https://adservice.google.com https://www.googletagmanager.com |
frame-src | https://td.doubleclick.net https://www.googletagmanager.com |
connect-src | https://pagead2.googlesyndication.com https://www.google.com https://www.googleadservices.com |
Pour les balises "scripts personnalisés" :
Directive | Contenu |
---|---|
frame-src | https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net |
Pour les tags d'image:
Directive | Contenu |
---|---|
img-src | https://ad.doubleclick.net https://ade.googlesyndication.com |
Service worker
Pour utiliser le service worker pour la correspondance avancée, les balises de données utilisateur et les conversions Ads, le CSP doit inclure les directives suivantes:
Directive | Contenu |
---|---|
frame-src | https://www.googletagmanager.com |