שימוש ב-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) בהוראה script-src של Content-Security-Policy:

Content-Security-Policy: script-src 'nonce-{SERVER-GENERATED-NONCE}'; img-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.

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

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

script-src: 'unsafe-inline' https://www.googletagmanager.com
img-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>

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

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

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

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

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

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

Floodlight

משתמשי Floodlight יכולים להפעיל מודעות CSP באמצעות ההגדרות הבאות. מחליפים את ערכי <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