小编典典

如何在Struts2应用程序中对AJAX请求进行CSRF保护

ajax

我有一个struts2
webapp,需要在其中实现CSRF保护。对于状态表格,这是非常简单的。我只需要激活tokenSession拦截器,然后设置<s:token/>要提交的表单即可。(在这里这里解释)

但是,当我需要为不一定通过表单提交的POST
AJAX调用(我使用jQuery)启用CSRF保护时,就会出现问题。在进行后续的AJAX调用时,我面临重用令牌的问题。

任何指针或不同的方法都是可以理解的。


阅读 367

收藏
2020-07-26

共1个答案

小编典典

目前,我已经通过为AJAX请求生成令牌并以正常响应发送它来解决了该问题,如下所示-

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

我将从中提取出一个util方法,并将其标记激活的Actions作为响应的一部分返回,以将其重复执行而无需刷新页面。

我仍然在寻找一种优雅的解决方案。

2020-07-26