3

为什么我会得到:

java.lang.NullPointerException org.owasp.csrfguard.CsrfGuardFilter.doFilter(CsrfGuardFilter.java:53)

尝试在 Tomcat 5.5 上运行0wasp.CsrfGuard.Test示例应用程序时?

我使用的示例应用程序与下载时完全一样,但进行了以下更改以规避listener错误:

  • 我下载了 CsrfGuard 3.0.0 包并将其复制Owasp.CsrfGuard.jarWEB-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 页面,它不应该允许这样做,它不允许。但是,它应该允许我通过正确的网页流程到达那里,所有页面都获得正确的令牌。

现在的问题是如何访问protect.html 页面?

谢谢。

4

1 回答 1

1

知道了!万一其他人有问题,这就是我想出的让 JavaScript DOM Manipulation 工作的方法。

.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 标记注入的另一种 CSRFGuard 方法,因为如果用户在浏览器中关闭了 JavaScript,JavaScript 机制将无法工作。

于 2013-02-20T02:37:41.673 回答