مانیفست - جعبه شنی

مجموعه ای از صفحات افزونه را تعریف می کند که قرار است در یک مبدا منحصر به فرد sandbox ارائه شوند. خط‌مشی امنیت محتوای مورد استفاده توسط صفحات سندباکس یک برنامه افزودنی در کلید "content_security_policy" مشخص شده است.

قرار گرفتن در جعبه شنی دو مفهوم دارد:

  1. یک صفحه sandbox شده به APIهای افزونه یا دسترسی مستقیم به صفحات غیر جعبه ایمنی دسترسی نخواهد داشت (ممکن است با استفاده از postMessage() با آنها ارتباط برقرار کند.
  2. یک صفحه سندباکس مشمول خط‌مشی امنیت محتوا (CSP) که توسط بقیه برنامه‌های افزودنی استفاده می‌شود نیست (مقدار CSP جداگانه خود را دارد). این بدان معناست که برای مثال، می تواند از اسکریپت درون خطی و eval() استفاده کند.

به عنوان مثال، در اینجا نحوه تعیین اینکه دو صفحه افزونه باید در یک جعبه ایمنی با یک CSP سفارشی ارائه شوند، آمده است:

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

اگر مشخص نشده باشد، مقدار پیش‌فرض "content_security_policy" عبارت است از sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self'; .

شما می‌توانید مقدار CSP خود را برای محدود کردن بیشتر سندباکس تعیین کنید، اما باید شامل دستورالعمل "sandbox" باشد و نباید نشانه allow-same-origin را داشته باشد ( مشخصات HTML5 را برای نشانه‌های جعبه ایمنی ممکن ببینید).

توجه داشته باشید که فقط باید صفحاتی را فهرست کنید که انتظار دارید در ویندوز یا فریم بارگذاری شوند. منابع مورد استفاده توسط صفحات sandbox (مثلاً شیوه نامه ها یا فایل های منبع جاوا اسکریپت) نیازی به نمایش در لیست pages ندارند زیرا از جعبه ایمنی فریمی که آنها را جاسازی می کند استفاده می کنند.

«استفاده از eval() در برنامه‌های افزودنی Chrome» به جزئیات بیشتری درباره پیاده‌سازی یک گردش کار sandboxing می‌پردازد که استفاده از کتابخانه‌هایی را که در غیر این صورت در اجرای خط‌مشی امنیت محتوای پیش‌فرض برنامه افزودنی با مشکلاتی مواجه می‌شوند را امکان‌پذیر می‌سازد.