警告:从版本 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
令牌(请参阅 HTML5 规范,了解可能的沙盒令牌)。此外,您指定的 CSP 可能不允许在沙盒化页面中加载外部 Web 内容。
请注意,您只需列出预计会在窗口或框架中加载的页面。沙盒化网页使用的资源(例如样式表或 JavaScript 源文件)不需要显示在 sandboxed_page
列表中,它们将使用嵌入了这些资源的网页的沙盒。
“在 Chrome 扩展程序中使用 eval。安全。”详细介绍了如何实现沙盒工作流程,该工作流程支持使用在根据扩展程序默认内容安全政策执行时出现问题的库。
只有在使用 manifest_version
2 或更高版本时,才能指定沙盒化页面。