如何在 chrome 扩展 manifest.json 文件中设置多个内容安全策略

Posted

技术标签:

【中文标题】如何在 chrome 扩展 manifest.json 文件中设置多个内容安全策略【英文标题】:how to set multiple Content Security Policies in a chrome extension manifest.json file 【发布时间】:2019-04-12 10:40:48 【问题描述】:

在Google chrome documentation 中,我发现我可以添加内容安全策略以允许外部 javascript 文件在我的扩展程序上工作。

但我找不到如何添加多个。它是一个字符串数组吗?

"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"

我试图像这样放置多行,但它不起作用。出现错误:

拒绝加载脚本 https://example.com,因为它违反了以下内容安全策略指令:“script-src 'self' https://example.com”。请注意,'script-src-elem' 没有显式设置,因此 'script-src' 用作备用。

【问题讨论】:

【参考方案1】:

CSP 策略是单个字符串(包含以分号分隔的 指令 列表及其参数)。它适用于所有扩展页面。

如果您需要包含多个来源的单一政策,您可以这样做。事实上,你已经有了:'self'https://example.com 是两个来源。

阅读有关 CSP 的一般信息和 script-src 指令,例如on the MDN.

语法

script-src 政策可以允许一个或多个来源:

Content-Security-Policy: script-src <source>;
Content-Security-Policy: script-src <source> <source>;

因此,您只需在 script-src 和分号之间用空格分隔它们。

确保您的来源不包含路径。 例如。 https://example.com 可以,但https://example.com/https://example.com/script.js 不行。

如果你需要针对不同页面的多个独立策略,恐怕你做不到。

【讨论】:

以上是关于如何在 chrome 扩展 manifest.json 文件中设置多个内容安全策略的主要内容,如果未能解决你的问题,请参考以下文章

如何查看chrome扩展的源代码

如何在网页中调用chrome浏览器里的扩展程序

如何在 Chrome 33+ 中通过 GPO 自动安装 Chrome 扩展(Chrome 错误或 GPO 安装的扩展的未记录更改?)

如何在隐身模式下启用我的 chrome 扩展程序?

如何在隐身模式下启用Chrome扩展程序?

如何在 Chrome 扩展中使用 fontawesome?