Chrome 扩展内容安全策略在设置为 * 时抛出错误

Mig*_*ens 0 javascript google-chrome-extension content-security-policy

我已经在我的manifest.json 中尝试了所有可能的CSP 设置,这是我当前的设置(我知道,非常开放且不安全)。

当我打开扩展程序的后台检查时,第一次重新加载后一切都很好,有时直到第五次,然后突然下面的错误开始涌入。

"content_security_policy": "default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';"
Run Code Online (Sandbox Code Playgroud)

我仍然收到以下错误

拒绝加载脚本“ https://myapp-12345.firebaseio.com/.lp?start=t&ser=1234567&cb=15&v=5 ”,因为它违反了以下内容安全策略指令:“script-src 'self' 'unsafe -评估'”。请注意,“script-src-elem”未明确设置,因此“script-src”用作后备。

我尝试过的

  • 当我更改manifest.json时删除chrome扩展

我有什么遗漏的吗?

Pet*_*ček 7

Chrome扩展中的CSP只能放宽到一定程度

"content_security_policy"Chrome 扩展清单中的条目仅允许开发人员在一定程度上放宽 CSP。允许的值的子集style-src非常有限,引用官方文档

目前,开发人员可以使用以下方案将来源列入白名单:blob、文件系统、https 和 chrome-extension。必须为 https 和 chrome-extension 方案显式指定源的主机部分。不允许使用通用通配符,例如 https:、https://* 和 https://*.com;...

CSP 中指定的许多值(例如*'unsafe-inline'for script-src)在 中无效"content_security_policy",Chrome 在解析 时会忽略它们(并带有警告)manifest.json

为什么您看不到有关无效 CSP 值的警告或错误

我怀疑您可能正在后台页面的 JavaScript 控制台中检查错误。您需要首先检查生成的错误和警告manifest.json。转到chrome://extensions/并单击您的扩展程序的“错误”按钮。将会出现几个警告,例如:

content_security_policy':忽略指令“script-src”中不安全的 CSP 值“*”。

编辑: 我刚刚注意到错误页面 ( chrome://extensions/?errors=<extension-id>) 的行为不一致。似乎存在一个错误,导致有关被忽略的 CSP 值的警告仅在重新加载扩展后才显示。

文档链接:

"content_security_policy"在 Chrome 中

"content_security_policy"在 Firefox 中
(规范基本相同,但我发现 MDN 上的文档更好、更容易理解。)