از Tag Manager با یک خط مشی امنیتی محتوا استفاده کنید

سیاست امنیتی محتوا (CSP) یک استاندارد امنیتی وب است که به طور گسترده پشتیبانی می‌شود و هدف آن جلوگیری از انواع خاصی از حملات مبتنی بر تزریق است که با دادن کنترل به توسعه‌دهندگان بر منابع بارگذاری شده توسط برنامه‌هایشان انجام می‌شود. از این راهنما برای درک نحوه استقرار Google Tag Manager در سایت‌هایی که از CSP استفاده می‌کنند، استفاده کنید.

فعال کردن تگ کانتینر برای استفاده از CSP

برای استفاده از Google Tag Manager در صفحه‌ای با CSP، CSP باید اجازه اجرای کد محفظه Tag Manager شما را بدهد. این کد به صورت کد جاوا اسکریپت درون‌خطی ساخته شده است که اسکریپت gtm.js را تزریق می‌کند. روش‌های مختلفی برای انجام این کار وجود دارد، مانند استفاده از nonce یا hash. روش توصیه شده استفاده از nonce است که باید یک مقدار تصادفی غیرقابل حدس باشد که سرور برای هر پاسخ به صورت جداگانه تولید می‌کند. مقدار nonce را در دستورالعمل Content-Security-Policy script-src-elem به صورت nonce-{SERVER-GENERATED-NONCE} وارد کنید و از نسخه nonce-aware کد محفظه 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 -->

سپس تگ منیجر، این nonce را به هر اسکریپتی که به صفحه اضافه می‌کند، منتشر می‌کند.

رویکردهای دیگری نیز برای فعال کردن اجرای یک اسکریپت درون‌خطی وجود دارد، مانند ارائه هش اسکریپت درون‌خطی در 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

متغیرهای سفارشی جاوا اسکریپت

با توجه به نحوه پیاده‌سازی متغیرهای سفارشی جاوا اسکریپت ، در صورت وجود CSP، مقدار آنها به صورت undefined ارزیابی می‌شود، مگر اینکه دستور 'unsafe-eval' در بخش script-src از CSP داده شده باشد.

دستورالعمل محتوا
script-src 'unsafe-eval'

حالت پیش‌نمایش

برای استفاده از حالت پیش‌نمایش گوگل تگ منیجر، 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:

گوگل آنالیتیکس

برای استفاده از گوگل آنالیتیکس، 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

برای استفاده از گوگل آنالیتیکس بدون هیچ گونه ویژگی تبلیغاتی، 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

برای استفاده از تگ تبدیل، ریمارکتینگ یا Conversion Linker گوگل ادز، 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

برای استفاده از بیکن‌های داده‌های کاربر گوگل ادز هنگام اجرا در زمینه‌های امن، CSP باید موارد زیر را مجاز بداند:

دستورالعمل محتوا
script-src-elem https://www.googletagmanager.com
connect-src https://www.google.com
frame-src https://www.googletagmanager.com

چراغ راهنمای داده‌های کاربر تبلیغات گوگل در زمینه‌های ناامن اجرا نمی‌شود، بنابراین پیکربندی CSP در این موارد قابل اجرا نیست.

نورافکن

برای استفاده از 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

مرکز تجاری

برای استفاده از مرکز فروشندگان، CSP باید موارد زیر را مجاز بداند:

دستورالعمل محتوا
script-src-elem https://www.googletagmanager.com
img-src https://*.merchant-center-analytics.goog
connect-src https://*.merchant-center-analytics.goog

کارگر خدماتی

برای استفاده از سرویس ورکر برای تطبیق پیشرفته، بیکن‌های داده‌های کاربر و تبدیل تبلیغات، CSP باید موارد زیر را مجاز بداند:

دستورالعمل محتوا
frame-src https://www.googletagmanager.com

عیب‌یابی با دستیار برچسب

برای عیب‌یابی مشکلات مربوط به سیاست امنیت محتوا (CSP)، از Tag Assistant استفاده کنید. Tag Assistant فهرست منابعی را که توسط سیاست امنیت محتوای شما مسدود شده‌اند، نمایش می‌دهد.

  1. دستیار برچسب را باز کنید و آدرس وب‌سایت خود را وارد کنید. یک برگه جدید با وب‌سایت شما باز می‌شود.

  2. اگر سیاست امنیتی محتوا در صفحه شما منبعی را مسدود می‌کند، یک مشکل CSP در بخش مشکلات صفحه از Tag Assistant نمایش داده می‌شود.

    تصویر صفحه دستیار برچسب که مشکل CSP را نشان می‌دهد

  3. برای مشاهده لیست تمام منابع مسدود شده در صفحه خود، گزینه «مشاهده مشکل» را در کنار مشکل CSP انتخاب کنید. تصویر صفحه دستیار برچسب که نوار لغزنده مشکل CSP را نشان می‌دهد

  4. تمام منابع مسدود شده را به سیاست امنیت محتوای خود اضافه کنید.