2012-11-12 51 views
2

我有一個需要實現CSRF保護的struts2 web應用程序。對於統計形式來說,它非常簡單。我只需要激活tokenSession攔截器&然後在要提交的表單中設置<s:token/>。 (解釋herehereHOWTO在Struts2應用程序中爲AJAX請求做CSRF保護

但是,當我需要啓用CSRF保護POST AJAX調用(我使用jQuery),這不一定是通過表單提交的問題出現。在進行後續的AJAX調用時,我面臨重新使用令牌的問題。

讚賞任何指針或不同的方法。

回答

2

目前我已經通過生成令牌解決問題爲AJAX請求併發送它與正常響應一樣 -

Map<String, String> tokenInfo = Maps.newHashMap(); 
    tokenInfo.put("struts.token.name", TokenHelper.getTokenName()); 
    tokenInfo.put(TokenHelper.getTokenName(), TokenHelper.setToken()); 

我將抽象出一個util的方法,這個&具有標記激活的Actions將這個作爲響應的一部分返回,以便在不刷新頁面的情況下重複執行。

我仍然在尋找一個優雅的解決方案。

+0

我們也面臨這個問題。你找到更好的解決方案嗎?另外,你能解釋更多關於你的解決方案嗎?你是否也對JSP文件進行了修改。 –

0

您不能生成令牌並將其用作ajax調用中的參數嗎?

對於後續的AJAX調用,您可以使用per-user Token

不一定是per-request Token

在本作解釋的SO回答:Do I need a CSRF token for jQuery .ajax()?

+1

謝謝,但我想所有也防止雙重提交以及。 「每個用戶」的方法對此沒有多大幫助。 – Chantz