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

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

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

برای استفاده از گوگل تگ منیجر در صفحه‌ای با CSP، CSP باید اجازه اجرای کد کانتینر تگ منیجر شما را بدهد. این کد به صورت کد جاوا اسکریپت درون‌خطی ساخته شده است که اسکریپت gtm.js را تزریق می‌کند. روش‌های مختلفی برای انجام این کار وجود دارد، مانند استفاده از nonce یا hash. روش توصیه شده استفاده از nonce است که باید یک مقدار تصادفی غیرقابل حدس باشد که سرور به صورت جداگانه برای هر پاسخ تولید می‌کند. مقدار nonce را در دستورالعمل Content-Security-Policy script-src وارد کنید:

Content-Security-Policy:
script-src 'nonce-{SERVER-GENERATED-NONCE}';
img-src www.googletagmanager.com;
connect-src www.googletagmanager.com www.google.com

سپس از نسخه بدون محدودیت کد کانتینر تگ منیجر درون‌خطی استفاده کنید. ویژگی بدون محدودیت را در عنصر اسکریپت درون‌خطی روی همین مقدار تنظیم کنید:

<!-- 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 مربوط به CSP فعال کرد.

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

دستورالعمل محتوا
اسکریپت-src 'unsafe-inline' https://www.googletagmanager.com
img-src www.googletagmanager.com
اتصال-src www.googletagmanager.com www.google.com

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

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

دستورالعمل محتوا
اسکریپت-src 'ارزیابی ناامن'

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

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

دستورالعمل محتوا
اسکریپت-src https://googletagmanager.com https://tagmanager.google.com
سبک-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
فونت-src داده‌های https://fonts.gstatic.com:

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

برای استفاده از تگ گوگل آنالیتیکس ۴، CSP باید دستورالعمل‌های زیر را شامل شود. نقاط پایانی مشخص شده با ۱ مخصوص ویژگی‌های تبلیغاتی هستند، اما توصیه می‌کنیم آنها را در هنگام راه‌اندازی اولیه لحاظ کنید تا اگر بعداً Google Ads را لینک کردید، CSP شما نیازی به به‌روزرسانی نداشته باشد.

دستورالعمل محتوا
اسکریپت-src https://*.googletagmanager.com
img-src https://*.google-analytics.com
https://*.googletagmanager.com
https://*.g.doubleclick.net 1
https://*.google.com 1
https://*.google.<TLD> 1
اتصال-src https://*.google-analytics.com
https://*.analytics.google.com
https://*.googletagmanager.com
https://*.g.doubleclick.net 1
https://*.google.com 1
https://*.google.<TLD> 1
https://pagead2.googlesyndication.com 1
قاب-src https://www.googletagmanager.com 1

۱- نقاط پایانی تبلیغات: این دامنه‌ها فقط برای استقرارهای GA4 که به تبلیغات گوگل (Google Ads) مرتبط هستند یا از ویژگی‌های تبلیغاتی استفاده می‌کنند، به طور فعال مورد نیاز هستند.

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

دستورالعمل محتوا
اسکریپت-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>
قاب-src https://www.googletagmanager.com
اتصال-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>

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

دستورالعمل محتوا
اسکریپت-src https://www.googletagmanager.com
قاب-src https://www.googletagmanager.com
اتصال-src https://google.com https://www.google.com

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

نورافکن

کاربران Floodlight می‌توانند CSPها را با استفاده از پیکربندی‌های زیر فعال کنند. مقادیر <FLOODLIGHT-CONFIG-ID> را با یک شناسه تبلیغ‌کننده Floodlight خاص یا * برای مجاز کردن هر شناسه تبلیغ‌کننده جایگزین کنید:

برای همه کاربران:

دستورالعمل محتوا
img-src https://ad.doubleclick.net https://ade.googlesyndication.com https://adservice.google.com
https://www.googletagmanager.com
قاب-src https://www.googletagmanager.com
اتصال-src https://pagead2.googlesyndication.com https://www.google.com https://www.googleadservices.com
https://ad.doubleclick.net

برای بیکن‌های «اسکریپت‌های سفارشی»:

دستورالعمل محتوا
قاب-src https://<FLOODLIGHT-CONFIG-ID>.fls.doubleclick.net

برای تگ‌های تصویر:

دستورالعمل محتوا
img-src https://ad.doubleclick.net https://ade.googlesyndication.com

کارگر خدماتی

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

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

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

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

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

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

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

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

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