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

Content Security Policy (CSP) to powszechnie obsługiwany standard zabezpieczeń internetowych służący do zapobiegania określonym typom ataków opartych na wstrzykiwaniu, zapewniając programistom kontrolę nad zasobami ładowanymi przez ich aplikacje. Z tego przewodnika dowiesz się, jak wdrożyć Menedżera tagów Google w witrynach, które korzystają z CSP.

Aby używać CSP, włącz tag kontenera

Aby można było używać Menedżera tagów Google na stronie z dostawcą CSP, musi on zezwalać na wykonanie kodu kontenera Menedżera tagów. Kod ten jest zbudowany jako wbudowany kod JavaScript, który wstrzykuje skrypt gtm.js. Można to zrobić na kilka sposobów, np. za pomocą liczby jednorazowej lub haszu. Zalecana metoda to użycie jednorazowej wartości, która powinna być nieodgadalnią losową wartością generowaną przez serwer osobno dla każdej odpowiedzi. Podaj wartość jednorazową w dyrektywie script-src z zasady Content-Security-Policy:

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

Następnie użyj wersji kodu kontenera wbudowanego Menedżera tagów, która nie zawiera danych jednorazowych. Ustaw tę samą wartość atrybutu liczba jednorazowa we wbudowanym elemencie skryptu:

<!-- 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 liczbę jednorazową do wszystkich skryptów, które doda do strony.

Istnieją inne sposoby umożliwiające wykonanie skryptu wbudowanego, na przykład udostępnienie szyfrowania wbudowanego skryptu w CSP.

Jeśli zalecane metody stosowania liczb jednorazowych lub haszowania nie są możliwe, możesz włączyć wbudowany skrypt Menedżera tagów, dodając dyrektywę 'unsafe-inline' do sekcji script-src CSP.

Aby korzystać z tego podejścia, musisz podać w CSP te dyrektywy:

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

Niestandardowe zmienne JavaScriptu

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

script-src: 'unsafe-eval'

Tryb podglądu

Aby można było korzystać z trybu podglądu Menedżera tagów Google, CSP musi zawierać 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 można było używać tagu Google Analytics 4 (Google Analytics), CSP musi zawierać 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) za pomocą Google Signals usługa 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>

Universal Analytics (Google Analytics)

Aby można było używać tagu Universal Analytics (Google Analytics), CSP musi zawierać te dyrektywy:

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

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

W przypadku bezpiecznych połączeń:

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

W przypadku niezabezpieczonych połączeń:

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

Aby można było używać tagu remarketingowego Google Ads, CSP musi zawierać poniższe dyrektywy.

W przypadku bezpiecznych połączeń:

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 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: bid.g.doubleclick.net td.doubleclick.net

Floodlight

Użytkownicy Floodlight mogą włączyć dostawców CSP za pomocą podanych niżej konfiguracji. Zastąp wartości <FLOODLIGHT-CONFIG-ID> konkretnym identyfikatorem reklamodawcy Floodlight lub *, aby zezwolić na dowolny identyfikator reklamodawcy:

Dla wszystkich użytkowników:

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

W przypadku beaconów „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