警告: 从 Chrome 57 版开始,Chrome 将不再允许沙盒化页面中包含外部 Web 内容(包括嵌入式框架和脚本)。请改用WebView。
定义要在沙盒化唯一来源中提供的一系列应用或扩展程序页面,并可选择要与这些页面搭配使用的内容安全政策。处于沙盒中有以下两个含义:
- 沙盒化页面将无法访问扩展程序或应用 API,也无法直接访问非沙盒化页面(它可以通过
postMessage()与这些页面通信)。 沙盒化页面不受应用或扩展程序的其余部分所用的内容安全政策 (CSP)的约束(它有自己的单独 CSP 值)。这意味着,例如,它可以内嵌脚本和
eval。例如,以下展示了如何指定在具有自定义 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令牌(如需了解可能的沙盒令牌,请参阅 the HTML5 specification)。此外,您指定的 CSP 不得允许在沙盒化页面中加载外部 Web 内容。
请注意,您只需列出您希望在窗口或框架中加载的页面。沙盒化页面使用的资源(例如样式表或 JavaScript 源文件)无需显示在
sandboxed_page 列表中,它们将使用嵌入它们的页面的沙盒。
“在 Chrome 扩展程序中使用 eval。安全地。”详细介绍了如何实现 沙盒化工作流,以便使用在 扩展程序的 默认内容安全政策下执行时会遇到问题的库。
只有在使用 manifest_version 2 或更高版本时,才能指定沙盒化页面。