שימוש ב-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;
connect-src www.googletagmanager.com www.google.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 יעביר את ה-nonce לכל סקריפט שהוא מוסיף לדף.

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

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

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

הוראה תוכן
script-src ‪'unsafe-inline' https://www.googletagmanager.com
img-src www.googletagmanager.com
connect-src www.googletagmanager.com www.google.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://*.googletagmanager.com
https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD>
connect-src https://*.google-analytics.com https://*.googletagmanager.com
https://*.g.doubleclick.net https://*.google.com https://*.google.<TLD> https://pagead2.googlesyndication.com
frame-src https://www.googletagmanager.com

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

הוראה תוכן
script-src https://www.googleadservices.com https://www.google.com https://www.googletagmanager.com
https://pagead2.googlesyndication.com https://googleads.g.doubleclick.net
img-src https://www.googletagmanager.com https://googleads.g.doubleclick.net https://www.google.com
https://pagead2.googlesyndication.com https://www.googleadservices.com
https://google.com https://www.google.<TLD>
frame-src https://www.googletagmanager.com
connect-src https://pagead2.googlesyndication.com https://www.googleadservices.com https://googleads.g.doubleclick.net
https://ad.doubleclick.net https://www.google.com https://google.com https://www.google.<TLD>

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

הוראה תוכן
script-src https://www.googletagmanager.com
frame-src https://www.googletagmanager.com
connect-src https://google.com https://www.google.com

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

Floodlight

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

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

הוראה תוכן
img-src https://ad.doubleclick.net https://ade.googlesyndication.com https://adservice.google.com
https://www.googletagmanager.com
frame-src https://www.googletagmanager.com
connect-src https://pagead2.googlesyndication.com https://www.google.com https://www.googleadservices.com
https://ad.doubleclick.net

למשואות (beacons) של 'סקריפטים בהתאמה אישית':

הוראה תוכן
frame-src https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net

לתגי תמונה:

הוראה תוכן
img-src https://ad.doubleclick.net https://ade.googlesyndication.com

קובץ שירות (service worker)

כדי להשתמש ב-Service Worker לצורך התאמה משופרת, אותות של נתוני משתמשים והמרות ב-Google Ads, צריך לכלול את ההנחיות הבאות ב-CSP:

הוראה תוכן
frame-src https://www.googletagmanager.com

איך פותרים בעיות בעזרת Tag Assistant

כדי לפתור בעיות שקשורות ל-Content Security Policy‏ (CSP), אפשר להשתמש ב-Tag Assistant. ב-Tag Assistant תוצג רשימת המשאבים שנחסמו על ידי Content Security Policy.

  1. פותחים את Tag Assistant ומזינים את כתובת האתר. האתר ייפתח בכרטיסייה חדשה.

  2. אם תקן Content Security Policy בדף חוסם משאב, בעיה שקשורה ל-CSP תוצג בקטע בעיות בדף בכלי Tag Assistant.

    צילום מסך של Tag Assistant שבו מוצגת בעיה ב-CSP

  3. לוחצים על הצגת הבעיה לצד בעיית ה-CSP כדי לראות את רשימת כל המשאבים החסומים בדף. צילום מסך של Tag Assistant שבו מוצג פס ההזזה של בעיית CSP

  4. מוסיפים את כל המשאבים החסומים למדיניות אבטחת התוכן.