清单 - 内容安全政策

可选的清单键,包含网络平台内容安全政策,用于指定对扩展程序可以使用的脚本、样式和其他资源的限制。在此清单键中,您可以为扩展程序页面和沙盒化扩展程序页面分别定义可选政策。

“扩展程序页面”政策会应用于扩展程序中的网页上下文和工作器上下文。这包括扩展程序弹出式窗口、后台工作器,以及扩展程序打开的包含 HTML 网页或 iframe 的标签页。沙盒政策适用于在清单中指定为沙盒页面的所有网页。

默认政策

如果用户未在清单中定义内容安全政策,则扩展程序页面和沙盒化扩展程序页面将使用默认属性。

这些默认值相当于在清单中指定以下政策:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

在这种情况下,该扩展程序将仅从自己的打包资源加载本地脚本和对象。WebAssembly 将被停用,该扩展程序将无法运行内嵌 JavaScript,也无法将字符串评估为可执行代码。如果添加了沙盒页面,它将拥有更宽松的权限,可以更宽松地评估扩展程序外部的脚本。

最低和自定义内容安全政策

开发者可以根据其项目需求为其扩展程序添加或移除规则,或使用最低的内容安全政策。

“扩展程序页面”政策

Chrome 会对扩展程序页面强制执行最低内容安全政策。这相当于在清单中指定以下政策:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

extension_pages 政策不能超过此最小值。换言之,您不能向指令添加其他脚本源,例如将 'unsafe-eval' 添加到 script-src。如果您向扩展程序的政策中添加了禁止的来源,Chrome 会在安装时抛出如下错误:

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

沙盒页面政策

沙盒页面的默认政策比扩展程序页面要宽松得多,因为沙盒页面无法访问扩展程序 API,也无法直接访问未经过沙盒化的网页。您可以根据需要自定义沙盒内容安全政策。