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

Content Security Policy (CSP) to powszechnie obsługiwany standard bezpieczeństwa w internecie, który ma zapobiegać niektórym rodzajom ataków opartych na wstrzykiwaniu kodu. Umożliwia deweloperom kontrolowanie zasobów wczytywanych 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 w kontenerze, aby korzystać z CSP

Aby korzystać z Menedżera tagów Google na stronie z CSP, CSP musi zezwalać na wykonywanie kodu kontenera Menedżera tagów. Ten kod jest wbudowany jako wbudowany kod JavaScript, który wstrzykuje skrypt gtm.js. Można to zrobić na kilka sposobów, np. za pomocą nonce lub hasha. Zalecana metoda to użycie a nonce, czyli nieodgadnionego, losowego ciągu znaków, który serwer generuje indywidualnie dla każdej odpowiedzi. Podaj wartość nonce w dyrektywie script-src standardu Content Security Policy:

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 nonce. Ustaw ten sam nonce w atrybucie nonce wbudowanego elementu 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 będzie wtedy propagować nonce do wszystkich skryptów, które dodaje do strony.

Istnieją inne sposoby na włączenie wykonywania wbudowanego skryptu, np. podanie hasha wbudowanego skryptu w CSP.

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

Aby użyć tej metody, w CSP musisz umieścić 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 niestandardowe zmienne JavaScript będą miały wartość undefined w przypadku CSP, chyba że w sekcji script-src CSP podasz dyrektywę 'unsafe-eval'.

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

Tryb podglądu

Aby korzystać z trybu podglądu Menedżera tagów Google, w CSP musisz umieścić 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), w CSP musisz umieścić 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 sygnałów Google w CSP musisz umieścić 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 tagu łączącego konwersje Google Ads, w CSP musisz umieścić 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://ad.doubleclick.net https://www.google.com https://google.com https://www.google.<TLD>

Aby używać sygnałów danych użytkownika Google Ads w kontekstach bezpiecznych, w CSP musisz umieścić 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 użytkownika Google Ads nie działa w kontekstach niebezpiecznych, więc konfiguracja CSP w takich przypadkach 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 *, aby zezwolić na dowolny identyfikator reklamodawcy:

W przypadku 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ć skryptu service worker do konwersji rozszerzonych, sygnałów danych użytkownika i konwersji Google Ads, w CSP musisz umieścić te dyrektywy:

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

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

Aby rozwiązywać problemy związane ze standardem Content Security Policy (CSP), użyj rozszerzenia Tag Assistant. Rozszerzenie Tag Assistant wyświetli listę zasobów, które są blokowane przez standard Content Security Policy.

  1. Otwórz rozszerzenie 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 rozszerzeniu Tag Assistant 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.