מדיניות אבטחת תוכן (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 יפיץ את המזהה החד-פעמי לכל הסקריפטים שהוא מוסיף לדף.
יש גישות אחרות להפעלת סקריפט בקוד, למשל, העברת ה-hash של הסקריפט בקוד ב-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: |
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 https://www.googletagmanager.com |
Google Ads
כדי להשתמש בתג המרה, בתג רימרקטינג או בתג 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.com.<TLD> |
frame-src | https://www.googletagmanager.com https://td.doubleclick.net |
connect-src | https://pagead2.googlesyndication.com https://www.googleadservices.com https://www.google.com https://google.com |
נתוני משתמש ב-Google Ads – איתות
כדי להשתמש בסמנים של נתוני המשתמשים ב-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 לא פועל בהקשרים לא מאובטחים, ולכן ההגדרה של 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://td.doubleclick.net https://www.googletagmanager.com |
connect-src | https://pagead2.googlesyndication.com https://www.google.com https://www.googleadservices.com |
בסמנים מסוג 'סקריפטים מותאמים אישית':
דירקטיבה | תוכן |
---|---|
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 |