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

Content Security Policy (CSP) to powszechnie obsługiwany standard bezpieczeństwa internetowego, który ma zapobiegać niektórym rodzajom ataków opartych na wstrzykiwaniu kodu. Umożliwia on programistom kontrolowanie zasobów wczytywanych przez ich aplikacje. Z tego przewodnika dowiesz się, jak wdrażać Menedżera tagów Google w witrynach, które korzystają z zasad CSP.

Włączanie tagu kontenera do korzystania z CSP

Aby używać Menedżera tagów Google na stronie z zasadami CSP, musisz zezwolić w tych zasadach na wykonywanie kodu kontenera Menedżera tagów. Ten kod jest wbudowanym kodem JavaScript, który wstawia skrypt gtm.js. Można to zrobić na kilka sposobów, np. używając jednorazowego kodu lub funkcji skrótu. Zalecana metoda to użycie wartości nonce, która powinna być nieprzewidywalną, losową wartością generowaną przez serwer indywidualnie dla każdej odpowiedzi. Podaj wartość nonce w dyrektywie Content-Security-Policy script-src:

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

Następnie użyj wersji wbudowanego kodu kontenera Menedżera tagów, która uwzględnia wartość nonce. Ustaw atrybut nonce w elemencie skryptu wbudowanego 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 będzie następnie przekazywać wartość nonce do wszystkich skryptów, które dodaje do strony.

Istnieją inne sposoby umożliwienia wykonania skryptu wbudowanego, np. podanie w CSP skrótu skryptu wbudowanego.

Jeśli zalecane podejścia z użyciem wartości nonce lub funkcji skrótu nie są możliwe, możesz włączyć skrypt wbudowany Menedżera tagów, dodając dyrektywę 'unsafe-inline' do sekcji script-src w zasadach CSP.

Aby korzystać z tej metody, musisz umieścić w nagłówku CSP te dyrektywy:

Dyrektywa Treść
script-src 'unsafe-inline' https://www.googletagmanager.com
img-src www.googletagmanager.com
connect-src www.googletagmanager.com www.google.com

Niestandardowe zmienne JavaScript

Ze względu na sposób implementacji niestandardowych zmiennych JavaScript w przypadku obecności CSP będą one przyjmować wartość undefined, chyba że w sekcji script-src CSP podano dyrektywę 'unsafe-eval'.

Dyrektywa Treść
script-src 'unsafe-eval'
.

Tryb podglądu

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

Dyrektywa Treść
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 używać tagu Google Analytics 4 (Google Analytics), musisz umieścić w nagłówku CSP te dyrektywy:

Dyrektywa Treść
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:

Dyrektywa Treść
script-src https://*.googletagmanager.com
img-src https://*.google-analytics.com https://*.googletagmanager.com
https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD>
connect-src https://*.google-analytics.com https://*.googletagmanager.com
https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD> https://pagead2.googlesyndication.com
frame-src https://www.googletagmanager.com

Aby używać tagu konwersji, remarketingu lub łączącego konwersje Google Ads, musisz umieścić w nagłówku CSP te dyrektywy:

Dyrektywa Treść
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://pagead2.googlesyndication.com https://www.googleadservices.com
https://google.com https://www.google.<TLD>
frame-src https://www.googletagmanager.com
connect-src https://pagead2.googlesyndication.com https://www.googleadservices.com https://googleads.g.doubleclick.net
https://www.google.com https://google.com https://www.google.<TLD>

Aby używać sygnałów danych o użytkownikach Google Ads w bezpiecznych kontekstach, nagłówek CSP musi zawierać te dyrektywy:

Dyrektywa Treść
script-src https://www.googletagmanager.com
frame-src https://www.googletagmanager.com
connect-src https://google.com https://www.google.com

Sygnał danych o użytkownikach reklam Google nie działa w niezabezpieczonych kontekstach, więc w takich przypadkach konfiguracja CSP nie ma zastosowania.

Floodlight

Użytkownicy Floodlight mogą włączyć CSP, korzystając z tych konfiguracji: Zastąp wartości <FLOODLIGHT-CONFIG-ID> konkretnym identyfikatorem reklamodawcy Floodlight lub wartością *, aby zezwolić na dowolny identyfikator reklamodawcy:

Dla wszystkich użytkowników:

Dyrektywa Treść
img-src https://ad.doubleclick.net https://ade.googlesyndication.com https://adservice.google.com
https://www.googletagmanager.com
frame-src https://www.googletagmanager.com
connect-src https://pagead2.googlesyndication.com https://www.google.com https://www.googleadservices.com
https://ad.doubleclick.net

W przypadku sygnałów „skryptów niestandardowych”:

Dyrektywa Treść
frame-src https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net

W przypadku tagów graficznych:

Dyrektywa Treść
img-src https://ad.doubleclick.net https://ade.googlesyndication.com

Skrypt service worker

Aby używać Service Worker do konwersji rozszerzonych, sygnałów danych użytkownika i konwersji z reklam, nagłówek CSP musi zawierać te dyrektywy:

Dyrektywa Treść
frame-src https://www.googletagmanager.com

Rozwiązywanie problemów za pomocą rozszerzenia Tag Assistant

Aby rozwiązać problemy ze standardem Content Security Policy (CSP), użyj Tag Assistant. Asystent tagów wyświetli listę zasobów zablokowanych przez zasady bezpieczeństwa treści.

  1. Otwórz Tag Assistant i wpisz adres URL swojej witryny. Otworzy się nowa karta z Twoją witryną.

  2. Jeśli standard Content Security Policy na stronie blokuje zasób, w sekcji Problemy ze stroną w Asystencie tagów wyświetli się problem z CSP.

    Zrzut ekranu rozszerzenia Tag Assistant pokazujący problem z zasadami CSP

  3. Kliknij Wyświetl problem obok problemu z CSP, aby wyświetlić listę wszystkich zablokowanych zasobów na stronie. Zrzut ekranu rozszerzenia Tag Assistant pokazujący suwak problemu z zasadami CSP

  4. Dodaj wszystkie zablokowane zasoby do standardu Content Security Policy.