为什么我得到:
java.lang.NullPointerException org.owasp.csrfguard.CsrfGuardFilter.doFilter(CsrfGuardFilter.java:53)
尝试运行 0wasp.CsrfGuard.Test 时Tomcat 5.5 上的示例应用程序?
我正在使用下载中的示例应用程序,但进行了以下更改以解决 listener
错误:
我下载了 CsrfGuard 3.0.0 包并将
Owasp.CsrfGuard.jar
复制到WEB-INF/lib
以绕过未找到的监听器.我更改了 web.xml 文件以使用
Owasp.CsrfGuard.jar
附带的监听器,而不是原始web.xml
中的两个监听器>,这是不存在的。
当我启动应用程序时没有错误,但是当我将浏览器指向 /Owasp.CsrfGuard.Test/index.html
页面时,出现上述错误。
有什么想法可以尝试吗?
更新...
几个小时后,我让它正常工作。我不明白为什么,但即使在停止并重新启动 Web 应用程序(至少在 Tomcat 中)之后,过滤器错误似乎仍然存在。我不得不重命名那个 webapp 的目录,等待 10 秒让 Tomcat 自动取消部署它,将它重命名回原来的目录名称,然后等待 10 秒让 Tomcat 将它识别为一个新的 webapp。我还从 web.xml 文件中删除了“x-requested-with”init-param,因为我不使用 AJAX。不知道这是否真的需要出来,但它有效,所以我将其排除在外。
现在,“protect.html”文件确实受到了保护,但保护得太好了。我根本做不到。如果我尝试直接转到 protect.html 页面,它应该不会允许,但事实并非如此。但是,它应该允许我通过正确的网页流程到达那里,所有页面都获得正确的 token 。
现在的问题是如何才能到达protect.html页面?
谢谢。
最佳答案
明白了!以防其他人遇到问题,这是我想出的让 JavaScript DOM 操作正常工作的方法。
.properties 文件中的所有引用都必须绝对引用 Web 容器(在我的例子中是 Tomcat)。即使您将 .js 和 .jar 文件放在特定的 webapp 中并使用 CSRFGuard 的正确设置修改该 webapp 的 web.xml 文件(顺便说一下,还有相对引用),.properties 文件中的条目必须包含对网络应用名称。例如,它必须是这样的:
org.owasp.csrfguard.unprotected.Index=/someapp/index.html
不仅仅是
org.owasp.csrfguard.unprotected.Index=index.html
这不直观,因为除非您处理整个 Tomcat 容器(即主 web.xml 文件),否则您通常可以删除 webapp 名称,因为它是该 webapp 的隐含名称。
现在我将研究 JSP 标记注入(inject)的其他 CSRFGuard 方法,因为如果用户在浏览器中关闭了 JavaScript,JavaScript 机制将无法工作。
关于java - Owasp.CsrfGuard.Test 出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14947028/