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

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

برچسب محتوی را برای استفاده از CSP فعال کنید

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

سپس «مدیر برچسب» عدد یک‌بارمصرف را به هر دستورگانی که به صفحه اضافه می‌کند منتشر می‌کند.

رویکردهای دیگری برای فعال کردن اجرای متن به‌خط وجود دارد، مانند ارائه درهم‌سازی متن به‌خط در CSP.

اگر رویکردهای nonce یا درهم‌سازی توصیه‌شده امکان‌پذیر نیست، می‌توانید با افزودن دستورالعمل 'unsafe-inline' به بخش script-src-elem CSP، اسکریپت درون‌خطی Tag Manager را فعال کنید.

برای استفاده از این رویکرد، موارد زیر باید توسط 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، این متغیرها درصورت وجود CSP به undefined ارزیابی می‌شوند، مگراینکه دستورالعمل 'unsafe-eval' در بخش script-src CSP ارائه شده باشد.

بخشنامه محتوا
script-src 'unsafe-eval'

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

برای استفاده از حالت پیش‌نمایش Google Tag Manager، خط‌مشی امنیت محتوا باید موارد زیر را مجاز کند:

بخشنامه محتوا
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، خط‌مشی امنیتی محتوا باید موارد زیر را مجاز کند:

بخشنامه محتوا
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 بدون هیچ‌یک از ویژگی‌های Ads، خط‌مشی امنیتی محتوا باید موارد زیر را مجاز کند:

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

بخشنامه محتوا
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، خط‌مشی امنیتی محتوا باید موارد زیر را نیز (علاوه‌بر موارد قبلی) مجاز کند:

بخشنامه محتوا
frame-src https://*.fls.doubleclick.net

Merchant Center

برای استفاده از Merchant Center، «خط‌مشی امنیتی محتوا» باید موارد زیر را مجاز کند:

بخشنامه محتوا
script-src-elem https://www.googletagmanager.com
img-src https://*.merchant-center-analytics.goog
connect-src https://*.merchant-center-analytics.goog

دروازه برچسب Google برای آگهی‌دهندگان

وقتی از دروازه برچسب Google برای آگهی‌دهندگان استفاده می‌کنید، برچسب Google از مسیر سنجش در وب‌سایت شما (برای مثال، https://www.example.com/metrics) بار می‌شود و داده‌ها را به آن ارسال می‌کند. برخی‌از برچسب‌ها همچنان درخواست‌ها را به دامنه‌های Google ارسال می‌کنند، بنابراین دستورالعمل‌های فهرست‌شده برای هر محصول را حفظ کنید و موارد زیر را نیز مجاز کنید:

بخشنامه محتوا هدف
script-src-elem 'self' درحال بار کردن برچسب Google از مسیر اندازه‌گیری شما
img-src 'self' درخواست‌های اندازه‌گیری
connect-src 'self' درخواست‌های اندازه‌گیری
worker-src 'self' عامل خدماتی

مطمئن شوید که CDN یا سرور وب شما سرایند Content-Security-Policy وب‌سایتتان را به پاسخ‌های مسیر سنجش شما اضافه نمی‌کند. درغیراین‌صورت، مرورگر می‌تواند کارگر سرویس را مسدود کند.

برچسب‌گذاری سمت سرور

وقتی برچسب Google داده‌ها را به حامل سرور ارسال می‌کند، 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 عامل خدماتی
worker-src 'self' نیاز نبود عامل خدماتی
script-src-elem 'self' https://TAGGING_SERVER_DOMAIN فقط اگر برچسب Google را از سرور برچسب‌گذاری‌تان بار کنید

در راه‌اندازی هم‌مبدأ، سرور برچسب‌گذاری از مسیری در وب‌سایت شما ارائه می‌شود (برای مثال، https://www.example.com/metrics). در راه‌اندازی زیردامنه، TAGGING_SERVER_DOMAIN را با دامنه سرور برچسب‌گذاری‌تان (برای مثال، sgtm.example.com) جایگزین کنید.

در راه‌اندازی هم‌مبدأ، مطمئن شوید که CDN یا سرور وب شما سرصفحه Content-Security-Policy وب‌سایتتان را به پاسخ‌های مسیر برچسب‌گذاری اضافه نمی‌کند. درغیراین‌صورت، مرورگر می‌تواند کارگر سرویس را مسدود کند.

عامل خدماتی

برچسب Google فقط زمانی از کارگر سرویس استفاده می‌کند که از دروازه برچسب Google برای آگهی‌دهندگان یا برچسب‌گذاری سمت سرور استفاده کنید. برای دستورالعمل‌هایی که هر راه‌اندازی نیاز دارد، دروازه برچسب Google برای آگهی‌دهندگان و برچسب‌گذاری سمت سرور را ببینید. اگر از هر دو استفاده می‌کنید، CSP باید هر دو را مجاز کند.

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

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

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

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

    نماگرفت «دستیار برچسب» که مشکل «خط‌مشی امنیتی محتوا» را نشان می‌دهد

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

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