我有一个CSRF,我需要在其中实现struts2保护。对于统计表来说,这是非常直接的。我只需要激活tokenSession
拦截器,然后在要提交的表单中设置<s:token/>
。(解释了here和here)
但是,当我需要为POST AJAX调用(我使用的是jQuery)启用CSRF保护时,问题就出现了,这些调用不一定是通过表单提交的。我面临着在进行后续AJAX调用时重用令牌的问题。
任何指针或不同的方法都很受欢迎。
发布于 2012-11-14 02:47:42
目前,我已经解决了这个问题,为AJAX请求生成令牌,并将其与正常响应一起发送,如下所示-
Map<String, String> tokenInfo = Maps.newHashMap();
tokenInfo.put("struts.token.name", TokenHelper.getTokenName());
tokenInfo.put(TokenHelper.getTokenName(), TokenHelper.setToken());
我将从中抽象出一个util方法&让标记激活的操作将其作为响应的一部分返回,这些操作将在不刷新页面的情况下重复执行。
尽管如此,我仍然在寻找一个优雅的解决方案。
发布于 2012-11-13 17:43:41
您不能生成一个令牌并将其用作ajax调用中的参数吗?
对于后续的AJAX调用,您可以使用per-user Token
,
不一定是per-request Token
,
https://stackoverflow.com/questions/13353577
复制相似问题