gor*_*613 2 jsp tomcat csrf-protection
我正在尝试在Tomcat 8中设置内置的CsrfPreventionFilter。
我想我已经阅读了StackOverflow上有关该主题的所有问题和答案,但仍然无法解决我的问题。
我有home.jsp和reports.jsp
home.jsp(一旦受到response.encodeUrl())的URL 是
www.example.com/home.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D874905015911
这是正确呈现的,不是因为随机数正在工作,而是因为我设置home.jsp为EntryPoint。但是,似乎确实可以证明CSRFPreventionFilter已启动并且正在运行,并且可以成功生成随机数。
如果按CTRL + N,然后键入www.example.com/reports.jsp,然后添加相同的现时值,即www.example.com/reports.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D874905015911得到页面403。reports.jsp未设置为EntryPoint,但我希望它能够成功呈现,因为它已随现时值一起提供。 。
我究竟做错了什么?
(我的问题有点类似于在tomcat 6.0.32中使用CSRF过滤器时出现403错误;但是我觉得答案可能不是CSRFPrevention过滤器的设置方式,而是我正在处理的方式中的一些问题内部的响应/请求,类似于@ 无法通过tomcat验证对CSRF令牌的发布请求中的 @Pankaj Kumar的答案 )
更新
这是web.xml配置
<filter>
<filter-name>CSRFPreventionFilter</filter-name>
<filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
<init-param>
<param-name>entryPoints</param-name>
<param-value>/images/404.JPG,/login.jsp,/home.jsp,/images/im_login.gif,/js/events.js,/js/menu.js,/js/amount_validation.js,/js/calendar.js,/js/toolbar.js,/js/tablesort.js,/js/scripts.js,/css/style.css</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CSRFPreventionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
您需要从js,css和图像路径中删除js,css和图像路径,entryPoints并为其设置过滤器映射CsrfPreventionFilter,使其不包含它们。
原因是在tomcat中,nonceCache的默认大小为5。在您的情况下,当请求js,css时,tomcat会生成一个新的nonce(因为它们在entryPoints中),并将其添加到缓存中,在5次这样的请求之后,您的最初的nonce(为home.jsp生成)会从nonceCache中清除出来,并且不是有效期更长。因此,403当您发送带有该随机数的合法请求时,您将得到一个。
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |