שימוש ב-Tag Manager עם Content Security Policy

Content Security Policy (CSP) היא פלטפורמת אינטרנט שנתמכת באופן נרחב תקן אבטחה שנועד למנוע סוגים מסוימים של מתקפות מבוססות הזרקה באמצעות הענקת שליטה במשאבים שנטענו על ידי האפליקציות שלהם. המדריך הזה יעזור לכם להבין איך לפרוס את Google Tag Manager באתרים משתמשים ב-CSP.

צריך להפעיל את תג המאגר כדי להשתמש ב-CSP

כדי להשתמש ב-Google Tag Manager בדף עם CSP, ה-CSP צריך לאפשר את הפעלת קוד מאגר התגים של Tag Manager. את הקוד הזה יש בתוך שורה קוד JavaScript שחדיר את הסקריפט gtm.js. אפשר לעשות זאת בכמה דרכים למשל, שימוש חד-פעמי (nonce) או בגיבוב (hash). השיטה המומלצת היא להשתמש nonce, שצריך להיות ערך אקראי שאי אפשר לנחש שהשרת מייצר בנפרד לכל תשובה. להזין את ערך צופן חד-פעמי (nonce) בשדה Content-Security- הוראה script-src של מדיניות:

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

לאחר מכן משתמשים בגרסה הלא מודעת של קוד מאגר התגים המוטבע של Tag Manager. צריך להגדיר את מאפיין ה-nonce ברכיב הסקריפט המוטבע לאותו הערך:

<!-- 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 -->

לאחר מכן מערכת Tag Manager תפיץ את צופן חד-פעמי (nonce) לכל סקריפטים שהוא מוסיף הדף.

יש גישות נוספות להפעלת סקריפט מוטבע, כמו שמספק את הגיבוב (hash) של הסקריפט המוטבע ב-CSP.

אם הגישות המומלצות לצופן חד-פעמי (nonce) או גיבוב (hash) לא אפשריות, אפשר להפעיל את הסקריפט המוטבע של Tag Manager על ידי הוספת 'unsafe-inline' לקטע script-src של ה-CSP.

כדי להשתמש בגישה הזו, יש צורך בהנחיות הבאות ב-CSP:

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

משתני JavaScript מותאמים אישית

עקב אופן ההטמעה של משתני JavaScript מותאמים אישית, הם הערך יהיה undefined בנוכחות CSP, אלא אם 'unsafe-eval' מופיעה בקטע script-src של ה-CSP.

script-src: 'unsafe-eval'

מצב של תצוגה מקדימה

כדי להשתמש במצב תצוגה מקדימה של Google Tag Manager, ה-CSP חייב לכלול את ההוראות הבאות:

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)

כדי להשתמש בתג Google Analytics 4 (Google Analytics), ה-CSP צריך לכלול את התג ההוראות הבאות:

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

בפריסות של Google Analytics 4 (Google Analytics) שמשתמשות ב-Google Signals, CSP חייב לכלול את ההוראות הבאות:

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

Universal Analytics (Google Analytics)

כדי להשתמש בתג של Universal Analytics (Google Analytics), ה-CSP צריך לכלול את המאפיין ההוראות הבאות:

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

כדי להשתמש בתג המרה של Google Ads, ה-CSP צריך לכלול את הפרטים הבאים הוראות:

לחיבורים מאובטחים:

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 https://td.doubleclick.net

בחיבורים לא מאובטחים:

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

כדי להשתמש בתג רימרקטינג של Google Ads, ה-CSP צריך לכלול את הפרטים הבאים חדשות.

לחיבורים מאובטחים:

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

בחיבורים לא מאובטחים:

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

כדי להשתמש במשוואות נתוני משתמשים ב-Google Ads כשעובדים בהקשרים מאובטחים, מדיניות CSP חייבת לכלול את ההוראות הבאות:

script-src: https://www.googletagmanager.com
frame-src: https://www.googletagmanager.com

חיישן נתוני המשתמשים של Google Ads לא פועל בהקשרים לא מאובטחים, לכן CSP במקרים כאלה אינה רלוונטית.

Floodlight

משתמשי Floodlight יכולים להפעיל CSPs באמצעות ההגדרות הבאות. החלפה <FLOODLIGHT-CONFIG-ID> ערכים עם ערך ספציפי מזהה מפרסם ב-Floodlight, או * כדי לאשר כל מזהה מפרסם:

לכל המשתמשים:

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

עבור 'סקריפטים מותאמים אישית' משׂואות רשת (beacon) ב-Tag Manager:

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

לגבי תגי תמונה:

img-src: https://ad.doubleclick.net

כדי להשתמש בסטטוס הסכמה:

img-src: https://ade.googlesyndication.com