Korzystanie z Menedżera tagów z Content Security Policy

Content Security Policy (CSP) to szeroko obsługiwany standard zabezpieczeń internetowych, który ma zapobiegać niektórym typom ataków polegających na wstrzykiwaniu kodu, dając deweloperom kontrolę nad zasobami wczytywanymi przez ich aplikacje. Z tego przewodnika dowiesz się, jak wdrożyć Menedżera tagów Google w witrynach, które korzystają z CSP.

Włącz tag kontenera, aby używać CSP

Aby używać Menedżera tagów Google na stronie z zasadami CSP, zasady te muszą zezwalać na wykonywanie kodu kontenera Menedżera tagów. Ten kod jest tworzony jako wbudowany kod JavaScript, który wstrzykuje skrypt gtm.js. Można to zrobić na kilka sposobów, np. używając liczby jednorazowej lub haszy. Zalecamy użycie wartości jednorazowej, która powinna być nieodmienną, losową wartością, którą serwer generuje pojedynczo dla każdej odpowiedzi. Podaj wartość jednorazową w dyrektywie script-src Content-Security-Policy:

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

Następnie użyj wersji kodu kontenera Menedżera tagów z uwzględnieniem nonce. Ustaw atrybut nonce w elementzie skryptu w ciele wiadomości na tę samą wartość:

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

Menedżer tagów przekaże tę liczbę jednorazową do wszystkich skryptów, które doda do strony.

Istnieją też inne sposoby włączania wykonywania skryptu wbudowanego, np. podanie hasza skryptu wbudowanego w CSP.

Jeśli zalecane podejście z użyciem skrótu lub hasha nie jest możliwe, możesz włączyć skrypt wbudowany Menedżera tagów, dodając dyrektywę 'unsafe-inline' do sekcji script-src w regułkach CSP.

Aby zastosować to podejście, w nagłówku CSP musisz umieścić te dyrektywy:

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

Niestandardowe zmienne JavaScript

Ze względu na sposób implementacji niestandardowych zmiennych JavaScript będą one oceniane jako undefined w ramach CSP, chyba że w sekcji script-src tego pliku znajduje się dyrektywa 'unsafe-eval'.

script-src 'unsafe-eval'

Tryb podglądu

Aby móc korzystać z trybu podglądu w Menedżerze tagów Google, musisz umieścić w nagłówku CSP te dyrektywy:

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)

Aby móc używać tagu Google Analytics 4 (Google Analytics), musisz umieścić w nagłówku CSP te dyrektywy:

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

W przypadku wdrożeń Google Analytics 4 (Google Analytics) korzystających z Google Signals nagłówek CSP musi zawierać te dyrektywy:

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

Aby można było używać tagu konwersji Google Ads, CSP musi zawierać te dyrektywy:

Aby zapewnić bezpieczne połączenia:

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

W przypadku niezabezpieczonych połączeń:

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

Aby używać tagu remarketingowego Google Ads, musisz umieścić w nagłówku CSP te dyrektywy:

Bezpieczne połączenia:

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

W przypadku niezabezpieczonych połączeń:

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

Aby używać obrazów typu beacon dla danych użytkownika Google Ads w bezpiecznym kontekście, CSP musi zawierać te dyrektywy:

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

Beacon danych użytkownika Google Ads nie działa w niebezpiecznych kontekstach, więc w takich przypadkach konfiguracja CSP nie ma zastosowania.

Floodlight

Użytkownicy Floodlight mogą włączać dostawców CSP za pomocą poniższych konfiguracji. Zastąp wartości <FLOODLIGHT-CONFIG-ID> określonym identyfikatorem reklamodawcy Floodlight lub wartością *, aby zezwolić na dowolny identyfikator reklamodawcy:

Wszyscy użytkownicy:

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

Obrazy typu beacon dla „skryptów niestandardowych” w Menedżerze tagów:

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

Tagi graficzne:

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

W przypadku trybu uzyskiwania zgody:

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