内容安全策略 - 不同的行为 windows 与 linux

Content security policy - different behaviour windows vs linux

我有一个在 LAMP 系统上运行的 wordpress 网站。

我试图提高安全性(我远不是专家!)并添加了一个 CSP header。

Header  set Content-Security-Policy "default-src 'self'; font-src 'self' data: https://fonts.gstatic.com; frame-src https://www.google.com https://www.youtube.com; img-src 'self' https://secure.gravatar.com; script-src 'self' 'unsafe-inline' ; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; object-src 'none'"

我不明白的是:如果我从 script-src 中删除 unsafe-inline,我的日历小部件就不会再在 windows 浏览器上加载(同时测试了 firefox 和 chrome).但它适用于 Linux 浏览器 (Firefox)。

这是 apache2、windows 浏览器或日历 wp 插件中的错误吗?

我很困惑。 :-)

它看起来不像是 Apache 错误,它只是将 CSP 作为字符串发送,甚至不了解其中的内容。

当然你可以在 httpd.conf 中使用一些用户代理条件,例如:

SetEnvIfNoCase User-Agent "Linux x86_64" noCSP=1

并根据 noCSP 标志发布 CSP 以排除某些类型的用户代理的 CSP header。
但是您可以 easily 澄清这一点并确保您对 Windows/Linux 浏览器具有相同的 CSP header。

我认为 WP 日历插件使用了一些内联脚本,这些脚本在没有 'unsafe-inline' 的情况下被阻止。您可以在 windows 浏览器的浏览器控制台中检查相应的 CSP 错误。

可能您在 Linux Firefox 浏览器中禁用了 CSP(about:config 页面 -> security.csp.enable -> false)或者某些扩展禁用了 CSP。

所以不同的 Windows/Linux 行为来自我的 Linux Firefox 中 运行 的实验室插件。 我必须与插件作者核实为什么需要 unsafe-inline