2013-02-18 97 views
3

为什么我得到:NullPointerException异常与Owasp.CsrfGuard.Test

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,我得到上述错误。

任何想法尝试?

更新...

几个小时后,我得到了它不工作的错误。我不明白为什么,但即使在停止并重新启动webapp(至少在Tomcat中)之后,过滤器错误似乎仍然存在。我必须重命名该webapp的目录,等待10秒让Tomcat自动取消部署,将其重命名为其原始目录名称,然后等待10秒让Tomcat将其识别为新的Web应用程序。我也从web.xml文件中删除了“x-requested-with”init-param,因为我没有使用AJAX。不知道是否真的需要出来,但它的作品,所以我把它放出去。

现在,“protect.html”文件确实受到了保护,但它受到了很好的保护。我根本无法得到它。如果我尝试直接转到protect.html页面,它不应该允许这样做,否则它不会。但是,它应该允许我通过适当的网页流程到达那里,所有页面都获得正确的令牌。

现在的问题是如何才能到达protect.html页面?

谢谢。

回答

1

Got it!如果其他人遇到问题,这里是我想要获得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容器(即主Web。xml文件),你通常可以放弃web应用程序的名称,因为它隐含的web应用程序。

现在我要研究一下JSP Tag Injection的另一个CSRFGuard方法,因为如果用户在浏览器中关闭JavaScript,JavaScript机制将不起作用。