使用Struts令牌防止跨站点请求伪造

使用Struts令牌防止跨站点请求伪造,第1张

使用Struts令牌防止跨站点请求伪造

Struts 1 Action令牌方法的工作方式与Struts
2令牌拦截器相同,因为它将为您的会话添加令牌并在表单提交时对其进行检查,但这是一个更加手动的过程。基本工作流程是:

  1. 用户通过Struts Action(不是直接到达JSP)进入表单
    saveToken(request)
    在转发到包含表单的JSP之前,将调用Struts Action 。
  2. JSP上的表单必须使用
    <html:form>
    标记。
  3. 表单提交给您的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);}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5142893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存