我有一個需要實現CSRF保護的struts2 web應用程序。對於統計形式來說,它非常簡單。我只需要激活tokenSession
攔截器&然後在要提交的表單中設置<s:token/>
。 (解釋here和here)HOWTO在Struts2應用程序中爲AJAX請求做CSRF保護
但是,當我需要啓用CSRF保護POST AJAX調用(我使用jQuery),這不一定是通過表單提交的問題出現。在進行後續的AJAX調用時,我面臨重新使用令牌的問題。
讚賞任何指針或不同的方法。
我有一個需要實現CSRF保護的struts2 web應用程序。對於統計形式來說,它非常簡單。我只需要激活tokenSession
攔截器&然後在要提交的表單中設置<s:token/>
。 (解釋here和here)HOWTO在Struts2應用程序中爲AJAX請求做CSRF保護
但是,當我需要啓用CSRF保護POST AJAX調用(我使用jQuery),這不一定是通過表單提交的問題出現。在進行後續的AJAX調用時,我面臨重新使用令牌的問題。
讚賞任何指針或不同的方法。
目前我已經通過生成令牌解決問題爲AJAX請求併發送它與正常響應一樣 -
Map<String, String> tokenInfo = Maps.newHashMap();
tokenInfo.put("struts.token.name", TokenHelper.getTokenName());
tokenInfo.put(TokenHelper.getTokenName(), TokenHelper.setToken());
我將抽象出一個util的方法,這個&具有標記激活的Actions將這個作爲響應的一部分返回,以便在不刷新頁面的情況下重複執行。
我仍然在尋找一個優雅的解決方案。
您不能生成令牌並將其用作ajax調用中的參數嗎?
對於後續的AJAX調用,您可以使用per-user Token
,
不一定是per-request Token
,
在本作解釋的SO回答:Do I need a CSRF token for jQuery .ajax()?
謝謝,但我想所有也防止雙重提交以及。 「每個用戶」的方法對此沒有多大幫助。 – Chantz
我們也面臨這個問題。你找到更好的解決方案嗎?另外,你能解釋更多關於你的解決方案嗎?你是否也對JSP文件進行了修改。 –