为什么我会得到:

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

在Tomcat5.5上运行0wasp.CsrfGuard.Test示例应用程序时?
我使用的示例应用程序与下载的示例应用程序完全相同,但有以下更改以避免出现listener错误:
我下载了csrfguard 3.0.0包,并将Owasp.CsrfGuard.jar复制到WEB-INF/lib以绕过找不到的侦听器。
我修改了一个文件,使用的是与CC一起出现的监听器,而不是原来的cc中的两个监听器,后者不存在。
当我启动应用程序时没有错误,但是当我将浏览器指向Owasp.CsrfGuard.jar页面时,我得到了上述错误。
有什么想法可以试试吗?
更新。。。
几个小时后,我让它正常工作。我不明白为什么,即使在停止并重新启动一个webapp(至少在tomcat中)之后,过滤器错误似乎仍然存在。我不得不重命名这个webapp的目录,等待10秒,让tomcat自动取消部署,将其重命名回原来的目录名,等待10秒,让tomcat将其识别为一个新的webapp。我还从web.xml文件中删除了“x-requested-with”init param,因为我不使用ajax。不知道这是否真的需要出来,但它的工作,所以我要离开它。
现在,“protect.html”文件确实受到了保护,但保护得太好了。我一点也做不到。如果我试图直接转到protect.html页面,它不应该允许这样做,但它应该允许我通过适当的网页流到达那里,所有页面都得到适当的令牌。
现在的问题是,如何才能访问protect.html页面?
谢谢。

最佳答案

知道了!如果其他人有问题,下面是我发现的让javascript dom操作工作的方法。
properties文件中的所有引用都必须绝对引用web容器(在我的例子中是tomcat)。即使您将.js和.jar文件放在特定的webapp中,并使用csrfguard的适当设置(顺便说一下,使用相对引用)修改该webapp的web.xml文件,.properties文件中的条目必须包含对webapp名称的引用。例如,它必须类似于:
org.owasp.csrfguard.unprotected.index=/someapp/index.html
而不仅仅是
org.owasp.csrfguard.unprotected.index=index.html
这并不直观,因为除非处理整个tomcat容器(即master web.xml文件),否则通常可以删除webapp名称,因为它是该webapp的隐含名称。
现在我将研究jsp标记注入的另一种csrfguard方法,因为如果用户在浏览器中关闭了javascript,javascript机制将不起作用。

关于java - 带Owasp.CsrfGuard.Test的NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14947028/

10-09 03:27