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-Policy script-src-elem בתור nonce-{SERVER-GENERATED-NONCE}, ומשתמשים בגרסה של קוד מאגר התגים המוטמע ב-Tag Manager שמזהה ערכי nonce. מגדירים את המאפיין 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-elem של ה-CSP.
כדי להשתמש בגישה הזו, צריך לאפשר את הדברים הבאים ב-CSP:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com 'unsafe-inline' |
img-src |
https://www.googletagmanager.com |
connect-src |
https://www.googletagmanager.com https://www.google.com |
משתני JavaScript בהתאמה אישית
בגלל האופן שבו משתני JavaScript בהתאמה אישית מוטמעים, הם יקבלו את הערך undefined אם יש CSP, אלא אם ההוראה 'unsafe-eval' ניתנת בקטע script-src של ה-CSP.
| הוראה | תוכן |
|---|---|
script-src |
'unsafe-eval' |
מצב התצוגה המקדימה
כדי להשתמש במצב תצוגה מקדימה של Google Tag Manager, ה-CSP צריך לאפשר את הפעולות הבאות:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com https://tagmanager.google.com |
style-src |
https://www.googletagmanager.com https://tagmanager.google.com https://fonts.googleapis.com |
img-src |
https://www.googletagmanager.com https://ssl.gstatic.com https://www.gstatic.com |
font-src |
https://fonts.gstatic.com data: |
Google Analytics
כדי להשתמש ב-Google Analytics, ה-CSP צריך לאפשר את הדברים הבאים:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com |
img-src |
https://www.googletagmanager.com https://*.google-analytics.com https://*.google.com https://*.google.<TLD> https://*.g.doubleclick.net |
connect-src |
https://www.googletagmanager.com https://*.google-analytics.com https://*.google.com https://*.google.<TLD> https://*.g.doubleclick.net https://pagead2.googlesyndication.com |
frame-src |
https://www.googletagmanager.com |
כדי להשתמש ב-Google Analytics בלי תכונות של Google Ads, ה-CSP צריך לאפשר את הדברים הבאים:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com |
img-src |
https://www.googletagmanager.com https://*.google-analytics.com |
connect-src |
https://www.googletagmanager.com https://*.google-analytics.com https://*.google.com |
Google Ads
כדי להשתמש בתג המרה, בתג רימרקטינג או בתג Conversion Linker של Google Ads, מדיניות ה-CSP צריכה לאפשר את הדברים הבאים:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com https://www.googleadservices.com https://www.google.com |
img-src |
https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://pagead2.googlesyndication.com https://www.google.com https://www.google.<TLD> |
connect-src |
https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://pagead2.googlesyndication.com https://www.google.com https://www.google.<TLD> https://ad.doubleclick.net |
frame-src |
https://www.googletagmanager.com |
נתוני משתמשים ב-Google Ads
כדי להשתמש במשואות של נתוני משתמשים ב-Google Ads בהקשרים מאובטחים, ה-CSP צריך לאפשר את הדברים הבאים:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com |
connect-src |
https://www.google.com |
frame-src |
https://www.googletagmanager.com |
המשואה של נתוני המשתמשים ב-Google Ads לא פועלת בהקשרים לא מאובטחים, ולכן הגדרת ה-CSP במקרים האלה לא רלוונטית.
Floodlight
כדי להשתמש ב-Floodlight, ה-CSP צריך לאפשר את הדברים הבאים:
| הוראה | תוכן |
|---|---|
img-src |
https://www.googletagmanager.com https://ad.doubleclick.net https://ade.googlesyndication.com https://adservice.google.com |
connect-src |
https://pagead2.googlesyndication.com https://www.google.com https://www.googleadservices.com https://ad.doubleclick.net |
frame-src |
https://www.googletagmanager.com |
כדי להשתמש בסקריפטים בהתאמה אישית של Floodlight, ה-CSP צריך לאפשר גם את הדברים הבאים (בנוסף לאלה שצוינו למעלה):
| הוראה | תוכן |
|---|---|
frame-src |
https://*.fls.doubleclick.net |
Merchant Center
כדי להשתמש ב-Merchant Center, מדיניות ה-CSP צריכה לאפשר את הדברים הבאים:
| הוראה | תוכן |
|---|---|
script-src-elem |
https://www.googletagmanager.com |
img-src |
https://*.merchant-center-analytics.goog |
connect-src |
https://*.merchant-center-analytics.goog |
שער Google Tag למפרסמים
כשמשתמשים בשער Google Tag למפרסמים, Google Tag נטען מנתיב מדידה באתר שלכם ושולח אליו נתונים (לדוגמה, https://www.example.com/metrics). חלק מהתגים עדיין שולחים בקשות לדומיינים של Google, לכן חשוב להשאיר את ההוראות שרשומות לכל מוצר, וגם לאפשר את הדברים הבאים:
| הוראה | תוכן | מטרה |
|---|---|---|
script-src-elem |
'self' |
טעינת Google Tag מנתיב המדידה |
img-src |
'self' |
בקשות למדידה |
connect-src |
'self' |
בקשות למדידה |
worker-src |
'self' |
קובץ שירות (service worker) |
חשוב לוודא שרשת ה-CDN או שרת האינטרנט לא מוסיפים את הכותרת Content-Security-Policy של האתר לתגובות מנתיב המדידה.
אחרת, הדפדפן עלול לחסום את ה-service worker.
תיוג בצד השרת
כש-Google Tag שולח נתונים למאגר תגים בצד השרת, מדיניות ה-CSP צריכה לאפשר גם את שרת התיוג. ההנחיות האלה לא מחליפות את ההנחיות שמופיעות לכל מוצר, כמו https://www.googletagmanager.com.
מה שצריך להוסיף תלוי במקום שבו מתארח שרת התיוג:
| הוראה | הגדרה באותו מקור | הגדרת תת-דומיין | מטרה |
|---|---|---|---|
img-src |
'self' |
https://TAGGING_SERVER_DOMAIN |
בקשות למדידה |
connect-src |
'self' |
https://TAGGING_SERVER_DOMAIN |
בקשות למדידה |
frame-src |
'self' |
https://TAGGING_SERVER_DOMAIN |
קובץ שירות (service worker) |
worker-src |
'self' |
אין צורך | קובץ שירות (service worker) |
script-src-elem |
'self' |
https://TAGGING_SERVER_DOMAIN |
רק אם טוענים את Google Tag משרת התיוג |
בהגדרה של מקור זהה, שרת התיוג מופעל מנתיב באתר (לדוגמה, https://www.example.com/metrics). בהגדרה של תת-דומיין, מחליפים את TAGGING_SERVER_DOMAIN בדומיין של שרת התיוג (לדוגמה, sgtm.example.com).
בהגדרה של אותו מקור, חשוב לוודא שה-CDN או שרת האינטרנט לא מוסיפים את הכותרת Content-Security-Policy של האתר לתגובות מנתיב התיוג.
אחרת, הדפדפן עלול לחסום את ה-service worker.
קובץ שירות (service worker)
Google Tag משתמש בקובץ שירות (service worker) רק כשמשתמשים בשער Google Tag למפרסמים או בתיוג בצד השרת. כדי לראות את ההוראות שנדרשות לכל הגדרה, עיינו במאמרים שער Google Tag למפרסמים ותיוג בצד השרת. אם משתמשים בשניהם, ה-CSP צריך לאפשר את שניהם.
איך פותרים בעיות בעזרת Tag Assistant
כדי לפתור בעיות שקשורות ל-Content Security Policy (CSP), אפשר להשתמש ב-Tag Assistant. Tag Assistant יציג את רשימת המשאבים שנחסמו על ידי ה-Content Security Policy.
פותחים את Tag Assistant ומזינים את כתובת האתר. האתר ייפתח בכרטיסייה חדשה.
אם המדיניות Content Security Policy בדף חוסמת משאב, בעיית CSP מוצגת בקטע Page issues (בעיות בדף) ב-Tag Assistant.

לוחצים על הצגת הבעיה לצד הבעיה שקשורה ל-CSP כדי לראות את רשימת כל המשאבים החסומים בדף.

מוסיפים את כל המשאבים החסומים ל-Content Security Policy.