ไฟล์ Manifest - แซนด์บ็อกซ์

กำหนดคอลเล็กชันของหน้าส่วนขยายที่จะแสดงในต้นทางที่ไม่ซ้ำซึ่งแซนด์บ็อกซ์ไว้ นโยบายรักษาความปลอดภัยเนื้อหาที่หน้าแซนด์บ็อกซ์ของส่วนขยายใช้จะระบุอยู่ในคีย์ "content_security_policy"

การอยู่ในแซนด์บ็อกซ์มีนัยยะ 2 ประการดังนี้

  1. หน้าที่ทำแซนด์บ็อกซ์จะไม่มีสิทธิ์เข้าถึง API ส่วนขยายหรือการเข้าถึงหน้าที่ไม่ได้แซนด์บ็อกซ์โดยตรง (อาจสื่อสารกับหน้าเหล่านั้นโดยใช้ postMessage())
  2. หน้าที่ทำแซนด์บ็อกซ์จะไม่อยู่ภายใต้นโยบายรักษาความปลอดภัยเนื้อหา (CSP) ที่ส่วนขยายอื่นๆ ใช้งาน (มีค่า CSP แยกต่างหาก) ซึ่งหมายความว่าระบบจะใช้สคริปต์ในหน้าและ eval() ได้ เป็นต้น

ตัวอย่างเช่น วิธีระบุว่าจะแสดงหน้าส่วนขยาย 2 หน้าในแซนด์บ็อกซ์ที่มี 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 สำหรับโทเค็นแซนด์บ็อกซ์ที่เป็นไปได้)

โปรดทราบว่าคุณต้องแสดงเฉพาะหน้าเว็บที่คุณคาดว่าจะโหลดในหน้าต่างหรือเฟรมเท่านั้น ทรัพยากรที่ใช้โดยหน้าเว็บแซนด์บ็อกซ์ (เช่น สไตล์ชีตหรือไฟล์ต้นฉบับ JavaScript) ไม่จำเป็นต้องปรากฏในรายการ pages เนื่องจากทรัพยากรจะใช้แซนด์บ็อกซ์ของเฟรมที่ฝังรายการดังกล่าวอยู่

"การใช้ eval() ในส่วนขยาย Chrome" จะให้รายละเอียดเพิ่มเติมเกี่ยวกับการใช้เวิร์กโฟลว์แซนด์บ็อกซ์ ซึ่งทำให้สามารถใช้ไลบรารีที่อาจมีปัญหาในการดำเนินการภายใต้นโยบายรักษาความปลอดภัยเนื้อหาเริ่มต้นของส่วนขยาย