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

时间:2015-10-31 15:41:46

标签: java html security web-applications content-security-policy

我在Tomcat上运行基于Java的Web应用程序.6。我的应用程序在localhost和端口9001上运行。

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

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

但我收到以下错误。

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

2 个答案:

答案 0 :(得分:5)

内容安全策略标头是受信任来源的白名单。

default-src列表是所有其他*-src列表使用的列表。如果它不存在,则默认为default-src: *,这意味着"所有内容都允许来自任何地方",它不提供任何针对XSS的保护。

因此,您应该从

开始
  • default-src none,因此不允许所有内容,或
  • default-src 'self',因此只允许来自您网域的内容。

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

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

在您的问题中,您指定了可能导致此问题的default-src * 'unsafe-inline' 'unsafe-eval';,因为*已隐含'unsafe-inline''unsafe-eval'。这就像说"允许所有内容并允许内联并允许eval"。

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

来源:

答案 1 :(得分:-3)

尝试:

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