我在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").
答案 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'