Usar o Gerenciador de tags com uma Política de Segurança de Conteúdo

A Política de Segurança de Conteúdo (CSP) é um padrão de segurança da Web com ampla compatibilidade. Ela dá aos desenvolvedores controle sobre os recursos carregados pelos aplicativos para evitar alguns tipos de ataques por injeção. Confira neste guia como implantar o Gerenciador de tags do Google nos sites que usam uma CSP.

Ativar a tag de contêiner para usar a CSP

Para usar o Gerenciador de tags do Google em uma página com uma CSP, essa política precisa permitir a execução do código do contêiner do Gerenciador. Esse código é criado como um código JavaScript inline que injeta o script gtm.js. Há várias maneiras de fazer isso, como a utilização de um valor de uso único ou um hash. Recomendamos um valor de uso único, que precisa ser um valor aleatório e não detectável que o servidor gera individualmente para cada resposta. Informe esse valor na diretiva script-src da Política de Segurança de Conteúdo:

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

Em seguida, use a versão do código do contêiner in-line do Gerenciador de tags que reconhece o valor. Defina o atributo do valor de uso único no elemento de script in-line como esse mesmo valor:

<!-- 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 -->

Assim, o Gerenciador de tags replicará o valor para qualquer script que ele adicionar à página.

Existem outras abordagens para permitir a execução de um script in-line, como fornecer o hash do script in-line na CSP.

Se as abordagens recomendadas acima não forem viáveis, você poderá adicionar a diretiva 'unsafe-inline' à seção script-src da CSP para ativar o script in-line do Gerenciador de tags.

As seguintes diretivas são necessárias na CSP para usar essa abordagem:

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

Variáveis JavaScript personalizadas

Devido à forma como as variáveis JavaScript personalizadas são implementadas, elas serão avaliadas como undefined se houver uma CSP, a menos que a diretiva 'unsafe-eval' seja informada na seção script-src da política.

script-src: 'unsafe-eval'

Modo de visualização

Para usar o modo de visualização do Gerenciador de tags do Google, a CSP precisa incluir estas diretivas:

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)

Para usar a tag do Google Analytics 4 (Google Analytics), a CSP precisa incluir as seguintes diretivas:

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

No caso de implantações do GA4 (Google Analytics) que usam os Indicadores do Google, a CSP precisa incluir as seguintes diretivas:

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)

Para usar a tag do Universal Analytics (Google Analytics), a CSP precisa incluir estas diretivas:

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

Para usar uma tag de conversão do Google Ads, a CSP precisa incluir estas diretivas:

No caso de conexões seguras:

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

No caso de conexões não seguras:

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

Para usar uma tag de remarketing do Google Ads, a CSP precisa incluir estas diretivas:

No caso de conexões seguras:

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

No caso de conexões não seguras:

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

Os usuários do Floodlight podem ativar as CSPs com as configurações abaixo. Substitua valores <FLOODLIGHT-CONFIG-ID> por um ID do anunciante do Floodlight específico ou por * para permitir qualquer ID do anunciante:

Para todos os usuários:

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

Para beacons de "scripts personalizados" no Gerenciador de tags:

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

Para tags de imagem:

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

Para modo de consentimento:

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