HOWTO做CSRF保护在Struts2应用AJAX请求(HOWTO do CSRF protect

2019-07-03 18:36发布

我有一个Struts2的Web应用程序中,我需要实现CSRF保护。 对于统计的形成是非常直截了当。 我只需要激活tokenSession拦截&然后设置<s:token/>的形式提交。 (解释这里和这里 )

但是,当我需要启用POST AJAX调用(我使用jQuery),这不一定是通过表单提交的CSRF保护出现的问题。 使得后续Ajax调用当我面对重新使用令牌的问题。

任何指针或不同的方法理解。

Answer 1:

目前,我已经通过为AJAX请求令牌,并与像这样的正常响应发送它解决了这个问题 -

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

我将抽象出一个实用程序方法摆脱这种与有有令牌激活,返回此作为响应的,这将不重复页面的刷新执行行动的一部分动作。

我仍然在寻找一个优雅的解决这个虽然。



Answer 2:

你能不能产生一个令牌,并在Ajax调用使用它作为参数?

对于后续Ajax调用,您可以使用per-user Token

不一定是per-request Token

在此解释SO回答: 我需要一个CSRF令牌jQuery的阿贾克斯()?



文章来源: HOWTO do CSRF protection in Struts2 application for AJAX requests