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

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

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

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

    ตัวอย่างเช่น วิธีระบุว่าจะแสดงหน้าส่วนขยาย 2 หน้าในแซนด์บ็อกซ์ที่มี CSP ที่กำหนดเอง

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

    หากไม่ได้ระบุไว้ ค่าเริ่มต้น 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 สำหรับโทเค็นแซนด์บ็อกซ์ที่เป็นไปได้) นอกจากนี้ CSP ที่คุณระบุอาจไม่อนุญาตให้โหลดเนื้อหาเว็บภายนอกภายในหน้าแซนด์บ็อกซ์

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

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

ระบุหน้าเว็บที่แซนด์บ็อกซ์ไว้เมื่อใช้ manifest_version 2 ขึ้นไปเท่านั้น