2015-10-09 130 views
4

我下面基於Spring框架本教程爲應用程序3.2.4Web安全:防止CSRF攻擊

http://springdiaries.blogspot.be/2012/12/web-security-preventing-csrf-attack.html#comment-form

的一點是,我已經簽了會議,我的天堂中的所有對象沒有發現有關鍵OWASP_CSRFTOKEN的任何對象,那是susposius,表現不好?

+0

那麼你有沒有跟着教程,或者你在錯誤的方式檢查。你如何檢查會話變量。同時發佈一些你正在使用的代碼(並且不要參考我們希望看到的代碼*你的代碼)。 –

+0

你爲什麼不使用彈簧安全?彈簧安全來自csrf保護。 –

+0

它會在沒有定義用戶/角色的情況下工作? –

回答

2

這是不完全的回答你的問題,這是不幸的是太模糊沒有神奇的水晶球^^回答,但這裏有一些事情你應該嘗試:

  • 退房您的要求是不從匹配 Owasp.CsrfGuard.properties配置文件中定義的 的unprotected模式中的一個的URL來(這些值是從OWASP docs ;你應該已經建立了不同的):

org.owasp.csrfguard.unprotected.Tag=/Owasp.CsrfGuard.Test/tag.jsp 
org.owasp.csrfguard.unprotected.JavaScriptServlet=/Owasp.CsrfGuard.Test/JavaScriptServlet 
org.owasp.csrfguard.unprotected.Html=*.html 
org.owasp.csrfguard.unprotected.Public=/MySite/Public/* 
  • 檢查您的Web服務器/ servlet容器日誌中的錯誤,無論是在啓動/應用負載,並在接收到客戶端請求。

  • 設置斷點herehere和 調試模式下啓動應用程序,以確保被加載類和令牌是 被請求。

  • 逐一查看所有配置參數。

  • 閱讀the project wiki並仔細文檔:

無論如何,您不必修改數據庫模式。這不是OWASP CRSF守護的工作方式(生成的令牌存儲在會話中,不會保留在數據庫中)。

另外值得一提的是,您正在關注過時的博客文章:如果您使用Spring,則根本不需要使用OWASP CSRF保護。你應該使用彈簧安全認證,它具有built in CSRF protection,這更容易設置。

查看教程on this page關於如何設置基於CSRF保護的HTML表單+基於SQL數據庫的認證(另外,不要錯過bcrypt密碼散列之一;它很容易設置,並且在某些時候您將很高興你正在存儲安全哈希而不是明文密碼)。

由於CSRF保護令牌是會話存儲的,您將看到您也不必修改數據庫以使用spring-security添加CSRF保護。

設置需要5-15分鐘; 30分鐘的春季新手上衣。簡而言之,框架負責生成和驗證令牌,並在無效請求上返回認證錯誤。

您只需在您的spring-security.xml配置文件<http>標記內包含<csrf />標記。

如果您使用的是基於HTML表單的認證,你還必須包括表單內的以下隱藏輸入:

<input type="hidden" name="${_csrf.parameterName}" 
      value="${_csrf.token}" />