Struts 1 Action令牌方法的工作方式与Struts
2令牌拦截器相同,因为它将为您的会话添加令牌并在表单提交时对其进行检查,但这是一个更加手动的过程。基本工作流程是:
- 用户通过Struts Action(不是直接到达JSP)进入表单。
saveToken(request)
在转发到包含表单的JSP之前,将调用Struts Action 。 - JSP上的表单必须使用
<html:form>
标记。 - 表单提交给您的Action将首先被调用
isTokenValid(request, true)
,如果返回,您应该重定向到第一个Action并显示一条错误消息false
。这还将重置下一个请求的令牌。
这样做不仅可以防止重复提交表单,而且任何脚本都必须先击中第一个Struts Action并进行会话,然后才能提交给第二个Struts
Action提交表单。由于一个站点无法为另一个站点设置会话,因此应避免使用CSRF。
如果通常将用户直接发送到JSP,请不要。相反,创建一个继承自的新类
ActionForward并将其设置为它的
execute()方法:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { saveToken(request); return super.execute(mapping, form, request, response);}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)