有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Struts 1中的java CSRF令牌实现

我们使用同步器令牌来防止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(请求、重置)


共 (1) 个答案

  1. # 1 楼答案

    在显示编辑页面的操作期间,调用saveToken方法

    saveToken(request)
    

    这将生成一个新标记并将其保存在会话中(html:form标记检测此值并将其作为隐藏的值存储在html表单中)。您实际上不需要在JSP中创建输入隐藏元素,因为saveToken方法和html:form将创建它

    在保存数据的操作过程中,调用isTokenValid方法。此方法检查提交的值是否与会话上保存的令牌匹配

    此时,如果令牌有效,则有两个选项:

    1. 您可以调用resetToken,这将清除会话上的令牌。因此,如果用户再次提交页面,会话上的令牌将被清除,对isTokenValid的第二次调用将失败

    2. 将true作为第二个参数传入isTokenValid。这将在检查令牌后重置令牌

      isTokenValid(request,true)
      

    您可以在Struts API中找到更多信息:

    1. isTokenValid(javax.servlet.http.HttpServletRequest request)
    2. saveToken(javax.servlet.http.HttpServletRequest request)

    希望这对你有帮助