คำเตือน: ตั้งแต่เวอร์ชัน 57 เป็นต้นไป Chrome จะไม่อนุญาตให้ใช้เนื้อหาเว็บภายนอก (รวมถึงเฟรมและสคริปต์ที่ฝัง) ในหน้าเว็บที่ทำแซนด์บ็อกซ์อีกต่อไป โปรดใช้ WebView แทน
กำหนดคอลเล็กชันหน้าแอปหรือส่วนขยายที่จะแสดงในต้นทางที่ไม่ซ้ำกันซึ่งอยู่ในแซนด์บ็อกซ์ และกำหนดนโยบายความปลอดภัยของเนื้อหา (ไม่บังคับ) ที่จะใช้กับหน้าดังกล่าว การใช้งานในแซนด์บ็อกซ์จะส่งผล 2 อย่างดังนี้
- หน้าที่อยู่ในแซนด์บ็อกซ์จะไม่มีสิทธิ์เข้าถึง API ของส่วนขยายหรือแอป หรือเข้าถึงหน้าเว็บที่ไม่ได้อยู่ในแซนด์บ็อกซ์โดยตรง (อาจสื่อสารกับหน้าเว็บเหล่านั้นผ่าน
postMessage()
) หน้าที่อยู่ในแซนด์บ็อกซ์จะไม่อยู่ภายใต้นโยบายรักษาความปลอดภัยเนื้อหา (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
แต่จะใช้สแซนด์บ็อกซ์ของหน้าเว็บที่ฝังทรัพยากรเหล่านั้น
"การใช้การประเมินในส่วนขยาย Chrome อย่างปลอดภัย" จะให้รายละเอียดเพิ่มเติมเกี่ยวกับการใช้เวิร์กโฟลว์แซนด์บ็อกซ์ ทำให้สามารถใช้ไลบรารีที่อาจมีปัญหาในการดำเนินการภายใต้นโยบายรักษาความปลอดภัยเนื้อหาเริ่มต้นของส่วนขยาย
คุณจะระบุหน้าที่อยู่ในแซนด์บ็อกซ์ได้ก็ต่อเมื่อใช้ manifest_version
เวอร์ชัน 2 ขึ้นไปเท่านั้น