我在Ubuntu 14.04 LTS上使用捆绑的Tomcat安装了一个新的JasperReports Server 6.2,带有Nginx代理,这样我就可以访问https://mydomain.xyz/jasperserver。它基本上可以工作,但我无法管理用户和角色。如果我绕过Nginx直接进入Tomcat http://123.123.123.123:8080/jasperserver,一切都可以正常工作。日志显示:
2016-02-28 19:44:08,024错误CsrfGuard,http-nio-8080-exec-3:44 -潜在的跨站请求伪造(CSRF)攻击挫败(用户:,ip:127.0.0.1,uri:/jasperserver/flow.html,错误:请求中缺少所需的令牌)
这与这个老问题完全相同:Running jasperserver behind nginx: Potential CSRF attack。但是我已经尝试了建议的两种缓解措施,仍然不起作用。
- 我尝试设置
underscores_in_headers on;
,首先只在http
中,然后在server
中,然后在两者中。 - 当这不起作用时,我删除了
WEB-INF/esapi/Owasp.CsrfGuard.properties
中JASPER_CSRF_TOKEN
和OWASP_CSRFTOKEN
的下划线
我重新启动服务器只是为了确保一切都被清除并重新启动,但仍然不工作。
我正在寻求解决方案的建议和/或关于在哪里更好地诊断问题的指导。我是碧玉的新手,我的Java/Tomcat技能已经生疏了。
4条答案
按热度按时间vaj7vani1#
我知道这已经很老了,但从JasperReports Server 7.X开始,可能还有更早的版本:
通过Nginx代理JasperReports Server时,
underscores_in_headers on;
设置必须在nginx配置中。从here的讨论中看起来,JasperReports Server使用的默认OWASP_CSRFGUARD头将在没有此设置的情况下被Nginx静默删除。我遇到的其他代理和负载均衡器都没有这样做。
gajydyqb2#
我也遇到了类似的问题,在日志中没有发现任何信息,但是这个带有错误消息
potential cross-site request forgery (CSRF) attack thwarted
的主题给了我一个想法:默认情况下,我有一个严格的无推荐策略,我把它改为一个稍微开放的策略,碧玉开始按预期工作。问题
您可以导航到碧玉服务器并可以登录。但是当您打开一个报告时,您会收到如下错误消息:
原因
锁定引用者策略将导致上述问题。
溶液
当来源和目的地相同时,您需要至少允许引用者信息。一个示例是:
有关
Referrer-Policy
的更多详细信息,请参见https://scotthelme.co.uk/a-new-security-header-referrer-policy/4smxwvx53#
我在碧玉Reports Server 7.2.X中也有同样的错误。
对我来说,解决方案是将OWASP_CSRFTOKEN更改为OWASP-CSRFTOKEN。
brqmpdu14#
到了版本8,这些解决方案都不起作用。我通过修改这个文件来关闭CSRF。WEB-INF/csrf/jrs.csrfguard.properties
你仍然会得到一个JavaScript错误,但登录和身份验证工作。你可能可以查看JS文件jrs.csrfguard.js,看看为什么它仍然抛出错误。这在Firefox中有效,但在Chrome中无效。