2013-02-18 44 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機制將不起作用。