我们正在使用同步器令牌来防止CSRF漏洞,如下所示
1> saveToken(request)
2> <input type="hidden"
name="<%=org.apache.struts.taglib.html.Constants.TOKEN_KEY%>"
value="<bean:write name="<%=Globals.TRANSACTION_TOKEN_KEY%>"/>">
3> isTokenValid(request)
由于令牌未刷新,修复程序无法正常工作。可能导致这种情况的原因。
下面的代码还有什么区别
isTokenValid(请求,复位)
答案 0 :(得分:0)
在显示编辑页面的操作过程中,您可以调用saveToken
方法。
saveToken(request)
这会生成新令牌并将其保存在会话中(html:form
标记检测到此值并将其存储为html表单上的隐藏值)。您不需要在JSP中创建输入隐藏元素,因为saveToken
方法与html:form
一起创建它。
在保存数据的操作过程中,您可以调用isTokenValid
方法。此方法检查提交的值是否与会话中保存的令牌匹配。
此时如果令牌有效,您有两个选择:
您可以拨打resetToken
,清除会话中的令牌。因此,如果用户再次提交页面,则应清除会话中的令牌,并且对isTokenValid
的第二次调用将失败。
将true作为第二个参数传递给isTokenValid
。这将在检查后重置令牌。
isTokenValid(request,true)
您可以在Struts API中找到更多信息: