清单 - 内容安全政策

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

“扩展程序页面”政策适用于扩展程序中的网页和工作器上下文。这包括扩展程序弹出式窗口、后台 Worker,以及扩展程序所打开的包含 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,也不能直接访问非沙盒化页面。可根据需要自定义沙盒内容安全政策。