微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在nginx后面运行jasperserver:潜在的CSRF攻击

我们使用Nginx进行httpsstream量卸载,代理到在端口8080上运行的本地安装的jasperserver(5.2)。

internet ---(https/443)---> Nginx ---(http/8080)---> tomcat/jasperserver

直接在其端口上访问jasperserver时,一切都很好。 当通过Nginx访问服务时,一些function被破坏(例如,在jasperserver UI中编辑用户),jasperserver日志具有这样的条目:

CSRFGuard: potential cross-site request forgery (CSRF) attack thwarted (user:%user%,ip:%remote_ip%,uri:%request_uri%,error:%exception_message%)

经过一些debugging,我们发现这个原因:

在它的标准configuration中,Nginx不会转发包含下划线名称的请求头。 Jasperserver(和Owasp框架)认使用下划线来传输csrf标记(分别为JASPER_CSRF_TOKEN和Owasp_CSrftOKEN )。

使用哪个python模块访问Windows 7的代理设置?

如何configurationAtom使用代理文件(pac)设置?

无法从Java中的Nginx反转代理获得远程IP

Nginx反向代理设置,连接到上游时,768个worker_connections是不够的

Nginx的docker作为本地的nodejs代理

解决scheme是要么:

Nginx:允许标题中的下划线

server { ... underscores_in_headers on;

jasperserver:更改jasperserver-pro/WEB-INF/esapI/Owasp.CsrfGuard.properties令牌configuration名称

另见这里:

标题variables在生产中丢失

http://wiki.Nginx.org/HttpCoreModule#underscores_in_headers

与Ubuntu的Android SDK设置代理

木偶,wget和代理

Rstudio和shiny的服务器代理设置

Python socket.accept()没有收到任何连接请求

如何在多个地点重新使用Nginx代理设置

自己回答 – 希望这对其他人也有用处

我有Jasperserver 5.5 AWS AMI的这个问题

更具体:

/var/lib/tomcat7/webapps/jasperserver-pro/WEB-INF/esapI/Owasp.CsrfGuard.properties

更改:

org.owasp.csrfguard.TokenName=JASPER_CSRF_TOKEN org.owasp.csrfguard.SessionKey=JASPER_CSRF_SESSION_KEY

至:

org.owasp.csrfguard.TokenName=JASPERCSrftOKEN org.owasp.csrfguard.SessionKey=JASPERCSRFSESSIONKEY

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐