我已经尝试了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';"
仍然出现以下错误
拒绝加载脚本'https://myapp-12345.firebaseio.com/.lp?start=t&ser=1234567&cb=15&v=5',因为它违反了以下内容安全策略指令:“ script-src'self''unsafe-eval'”。请注意,未明确设置“ script-src-elem”,因此将“ script-src”用作备用。
我有什么想念的吗?
答案 0 :(得分:2)
"content_security_policy"
条目允许开发人员仅在一定程度上放宽CSP。 style-src
允许的值子集非常有限,引用official documentation:
当前,开发人员可以通过以下方式允许列出来源 方案:blob,文件系统,https和chrome-extension 。主机部分 必须为https明确指定来源的 chrome扩展方案。通用通配符,例如https:,https:// * 和https://*.com不允许; ...
您的CSP中指定的许多值(例如*
的{{1}}和'unsafe-inline'
)在script-src
中无效,Chrome会忽略它们(警告)解析"content_security_policy"
时。
我怀疑您可能正在后台页面的JavaScript控制台中检查错误。您需要首先检查为您的manifest.json
生成的错误和警告。转到manifest.json
,然后单击扩展程序的错误按钮。会有这样的警告:
content_security_policy':忽略指令中不安全的CSP值“ *” 'script-src'。
编辑:
我只是注意到“错误”页面(chrome://extensions/
)的行为不一致。似乎存在一个错误,导致仅在重新加载扩展程序后才会显示有关被忽略的CSP值的警告。
"content_security_policy"
in Chrome
"content_security_policy"
in Firefox
(规范基本上是相同的,但我发现关于MDN的文档更好,更易于遵循。)