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
Konwersje Google Ads
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
Remarketing w Google Ads
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
Beacon danych użytkownika Google Ads
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