سیاست امنیت محتوا و CMP شما: هم‌کاری CSP و رضایت

دو لایه امنیتی که باید با هم سازگار باشند

سیاست امنیت محتوا (CSP) به مرورگر می‌گوید یک صفحه از کدام منابع می‌تواند اسکریپت، سبک، تصویر، فریم و درخواست شبکه بارگذاری کند. یک پلتفرم مدیریت رضایت کار مخالف را انجام می‌دهد: بر اساس انتخاب کاربر تصمیم می‌گیرد کدام یک از آن اسکریپت‌ها اجازه اجرا دارند. وقتی این دو جداگانه پیکربندی شوند با هم برخورد می‌کنند. یا CMP بارگذاری نمی‌شود چون CSP آن را مسدود می‌کند، یا CSP برای جا دادن CMP و تگ‌های تبلیغاتی آن‌قدر شل می‌شود که دیگر از چیزی محافظت نمی‌کند.

این راهنما توضیح می‌دهد CMP معمولاً به کدام دستورهای CSP نیاز دارد، nonceها چگونه با تزریق اسکریپت تعامل می‌کنند و چگونه تغییرات را بدون خراب کردن بنر اجرا کنید.

CMP معمولاً از CSP چه می‌خواهد

الزامات دقیق به فروشنده بستگی دارد، پس همیشه از مستندات خود CMP شروع کنید. به‌طور کلی این دستورها را بررسی کنید:

در سایت‌های TCF به یاد داشته باشید که CMP یک فریم محل‌یاب به نام __tcfapiLocator نیز در صفحه می‌سازد. این فریم بدون منبع راه دور ساخته می‌شود، بنابراین معمولاً به ورودی frame-src نیاز ندارد، اما ارزش دارد در آزمایش تأیید شود.

مشکل استاب درون‌خطی

بیشتر CMPها از شما می‌خواهند یک اسکریپت درون‌خطی کوچک — استاب — را در head صفحه قرار دهید تا اسکریپت‌های دیگر بتوانند پیش از بارگذاری CMP اصلی فراخوانی‌ها را در صف بگذارند. یک CSP سخت‌گیرانه اسکریپت‌های درون‌خطی را مسدود می‌کند مگر اینکه صراحتاً اجازه دهید. سه گزینه دارید:

  1. nonce. به ازای هر پاسخ یک مقدار تصادفی تولید کنید و آن را به‌صورت 'nonce-...' به سرآیند CSP و به تگ <script> استاب اضافه کنید. این انعطاف‌پذیرترین گزینه برای صفحات پویاست.
  2. هش. هش SHA-256 محتوای دقیق استاب را به script-src اضافه کنید. این برای سایت‌های ایستا خوب کار می‌کند، اما هر تغییری در استاب، حتی یک فاصله، آن را می‌شکند.
  3. میزبانی خودتان برای استاب به‌صورت یک فایل بیرونی روی دامنه خودتان که با 'self' پوشش داده می‌شود. این کار دقت می‌خواهد تا به‌اندازه کافی زود بارگذاری شود.

از 'unsafe-inline' به‌عنوان میان‌بر پرهیز کنید. این مقدار هر اسکریپت درون‌خطی را مجاز می‌کند و بخش بزرگی از حفاظتی را که CSP فراهم می‌کند از بین می‌برد.

nonceها و اسکریپت‌هایی که CMP تزریق می‌کند

CMPی که اسکریپت‌ها را تا زمان رضایت مسدود می‌کند اغلب با نگه داشتن آن‌ها و تزریق بعدی‌شان کار می‌کند. در یک CSP مبتنی بر nonce، آن اسکریپت‌های تزریق‌شده نیز باید مجاز شوند. دو رویکرد رایج وجود دارد:

مدیران تگ همین پرسش را پیش می‌آورند. اگر تگ‌های تبلیغاتی و تحلیلی را از طریق مدیر تگ بارگذاری می‌کنید، مستندات آن درباره nonceها را دنبال کنید و مطمئن شوید CMP و مدیر تگ رویکرد یکدستی دارند.

تگ‌های تبلیغاتی CSP را دشوارتر می‌کنند

تبلیغات برنامه‌نویسی‌شده اسکریپت و فریم را از دامنه‌های بسیاری بارگذاری می‌کند و با تغییر شرکای تقاضا فهرست هم تغییر می‌کند. ناشران معمولاً یکی از دو انتخاب را می‌کنند:

در هر دو حالت، CMP باید در فهرست مجاز صریح باشد، نه فقط با یک wildcard پوشش داده شود، تا تغییر CSP هرگز بنر را بی‌صدا از کار نیندازد.

اجرا با حالت Report-Only

ابتدا از سرآیند Content-Security-Policy-Report-Only استفاده کنید. مرورگر تخلفات را بدون مسدود کردن چیزی گزارش می‌کند تا ببینید سیاست جدید چه چیزی را خراب می‌کند.

  1. سیاست را در حالت report-only با یک نقطه پایانی گزارش‌دهی مستقر کنید.
  2. صفحات را در پروفایل‌های تمیز مرورگر بارگذاری کنید و کل جریان رضایت را طی کنید: بازدید اول، پذیرش همه، رد همه، انتخاب سفارشی، پس‌گرفتن رضایت.
  3. گزارش‌های تخلف و کنسول مرورگر را برای منابع مسدودشده CMP مرور کنید.
  4. سیاست را اصلاح کنید، سپس به حالت اجرایی بروید.
  5. گزارش‌دهی را پس از اجرایی شدن فعال نگه دارید تا پسرفت‌ها شناسایی شوند.

نشانه‌های تعارض CSP

نکات کلیدی

← وبaderegistrdelays delays خواندن همه →