שימוש ב-Tag Manager עם 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;
connect-src www.googletagmanager.com

לאחר מכן, משתמשים בגרסה עם תמיכה ב-nonce של קוד מאגר התגים של 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 יפיץ את המזהה החד-פעמי לכל הסקריפטים שהוא מוסיף לדף.

יש עוד גישות להפעלת סקריפט מוטבע, כמו הוספת גיבוב של הסקריפט המוטבע ב-CSP.

אם לא ניתן להשתמש בשיטות המומלצות ליצירת קוד חד-פעמי או ליצירת גיבוב, אפשר להפעיל את הסקריפט בשורה של 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

כדי להשתמש בתג המרה של 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 https://pagead2.googlesyndication.com
frame-src https://www.googletagmanager.com https://td.doubleclick.net
connect-src https://pagead2.googlesyndication.com

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

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

כדי להשתמש בתג רימרקטינג של 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://td.doubleclick.net

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

script-src www.googleadservices.com googleads.g.doubleclick.net www.google.com
img-src www.google.com google.com
frame-src td.doubleclick.net

כדי להשתמש בסמנים של נתוני המשתמשים ב-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

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

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

בתגי תמונה:

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

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

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