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;
connect-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
connect-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
Konwersje Google Ads
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 https://www.googletagmanager.com
img-src: https://googleads.g.doubleclick.net https://www.google.com https://google.com
frame-src: https://www.googletagmanager.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
Remarketing w Google Ads
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
Obraz typu beacon danych użytkownika Google Ads
Aby można było używać beaconów danych użytkownika Google Ads w bezpiecznych kontekstach, CSP musi zawierać te dyrektywy:
script-src: https://www.googletagmanager.com
frame-src: https://www.googletagmanager.com
Sygnał beacon dla danych użytkownika Google Ads nie działa w niezabezpieczonych kontekstach, więc konfiguracja CSP w takich przypadkach nie jest potrzebna.
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