java - Owasp.CsrfGuard.Test 出现 NullPointerException

标签 java nullpointerexception listener csrf owasp

为什么我得到:

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/

相关文章:

java - 如何检查 JRadioButtons 是否被选中?

Java:空指针异常

javascript - 为什么监听器激活两次?

javascript - GEvent.addListener(...) 返回?

android - Spinner 的监听器将默认/显示选项检测为 ItemSelected?

java - Spring - ModelAttribute 和参数名称

java - 如何序列化 Java 对象以便它可以被 pickle (Python) 反序列化?

java - CookieHandler 还是 org.apache.http.cookie 哪种方式更好?

java - libgdx - box2d 速度和力不起作用

java - 无法解决线程 "AWT-EventQueue-0"java.lang.NullPointerException 中的异常