Manifest - خط مشی امنیت محتوا

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

خط مشی "صفحات برنامه افزودنی" در مورد صفحه و زمینه های کارگر در برنامه افزودنی اعمال می شود. این شامل پنجره بازشو، پس‌زمینه، و برگه‌هایی با صفحات HTML یا iframe‌هایی است که توسط برنامه افزودنی باز شده‌اند. خط مشی جعبه ایمنی برای همه صفحاتی که به عنوان صفحه جعبه ایمنی در مانیفست مشخص شده اند اعمال می شود.

خط مشی پیش فرض

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

این پیش‌فرض‌ها معادل تعیین خط‌مشی‌های زیر در مانیفست شما هستند:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

در این مورد، برنامه افزودنی فقط اسکریپت ها و اشیاء محلی را از منابع بسته بندی شده خود بارگیری می کند. WebAssembly غیرفعال می شود و برنامه افزودنی جاوا اسکریپت درون خطی اجرا نمی شود یا نمی تواند رشته ها را به عنوان کد اجرایی ارزیابی کند. اگر صفحه sandbox اضافه شود، مجوزهای راحت تری برای ارزیابی اسکریپت ها از خارج از برنامه افزودنی خواهد داشت.

سیاست های امنیتی محتوای حداقل و سفارشی شده

توسعه دهندگان ممکن است قوانینی را برای برنامه افزودنی خود اضافه یا حذف کنند، یا از حداقل خط مشی امنیتی محتوای مورد نیاز برای مطابقت با نیازهای پروژه خود استفاده کنند.

خط مشی صفحات پسوند

Chrome حداقل خط مشی امنیتی محتوا را برای صفحات افزونه اعمال می کند. این معادل مشخص کردن خط مشی زیر در مانیفست شما است:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

خط‌مشی extension_pages نمی‌تواند فراتر از این مقدار حداقل کاهش یابد. به عبارت دیگر، نمی‌توانید منابع اسکریپت دیگری را به دستورالعمل‌ها اضافه کنید، مانند افزودن 'unsafe-eval' به script-src . اگر یک منبع غیرمجاز را به خط‌مشی برنامه افزودنی خود اضافه کنید، Chrome در زمان نصب خطایی مانند زیر ایجاد می‌کند:

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

خط مشی صفحات سندباکس

خط‌مشی پیش‌فرض برای صفحات sandbox شده بسیار ملایم‌تر از صفحات افزونه است، زیرا صفحه sandbox به APIهای افزونه یا دسترسی مستقیم به صفحات غیر sandbox دسترسی ندارد. خط مشی امنیتی محتوای sandbox را می توان در صورت نیاز سفارشی کرد.