מדיניות אבטחת תוכן (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 |
Google Ads
כדי להשתמש בתג המרה, בתג רימרקטינג או בתג לקישור המרות של 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://google.com https://www.google.com.<TLD> https://pagead2.googlesyndication.com |
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 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://td.doubleclick.net |
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 |