内容安全策略:页面的设置阻止了资源的加载?

Content Security Policy: The page's settings blocked the loading of a resource at self?

我在 Tomcat 6 上有基于 Java-based 的 Web 应用程序 运行。我的应用程序是 运行 在本地主机和端口 9001 上。

为了使我的应用程序更安全并降低 XSS 攻击的风险,我添加了 header Content-Security-Policydefault-src * 'unsafe-inline' 'unsafe-eval';script-src 'self'。有了这个,我想允许 Web 应用程序从同一域加载 JavaScript 文件。

对于其他资源,它将继续以与没有此 header 时相同的方式加载。

但我收到以下错误。

Content Security Policy: The page's settings blocked the loading of a resource at self ("script-src http://localhost:9001").

内容安全策略header 是可信来源的白名单。

default-src 列表是所有其他 *-src 列表使用的列表。如果不存在,则默认为 default-src: *,即 "all content is allowed from anywhere",不提供任何针对 XSS 的保护。

因此,您应该从

开始
  • default-src none,这样所有的内容都是不允许的,或者
  • default-src 'self',以便仅允许您域中的内容。

之后,其他的*-src可以根据需要替换。例如,以下除了图像之外的所有内容都信任自己,并且图像只允许来自 example.com(而不是来自 'self'):

default-src 'self'; img-src example.com;

在您的问题中,您指定了 default-src * 'unsafe-inline' 'unsafe-eval';,这可能是导致问题的原因,因为 * 已经暗示了 'unsafe-inline''unsafe-eval'。就像说 "allow everything and allow inline and allow eval".

另请注意,IE >= 8 中的 X-Content-Security-Header 支持 CSP。

来源:

尝试:

default-src * 'unsafe-inline' 'unsafe-eval';script-src 'self' 'unsafe-inline' 'unsafe-eval'