Nir*_*ane 19 java struts cross-domain struts-1
我想为我的Web应用程序实现跨站点请求防伪,这是基于struts 1.x框架.我知道struts 2框架为此提供了令牌拦截器,我可以使用过滤器实现类似的功能.
我很少有人认为1)我怎么能用简单的方式生成独特的令牌呢?(我可以为此目的使用Action类令牌,用于避免重复的表单提交)
使用struts 1.x框架令牌机制进行CSRF预防是否存在任何问题
Jos*_*son 17
Struts 1 Action令牌方法的工作方式类似于Struts 2令牌拦截器,因为它会在会话中添加一个令牌并在表单提交时进行检查,但这是一个更加手动的过程.基本工作流程是:
saveToken(request)在转发到包含该表单的JSP之前调用.<html:form>标记.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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19687 次 |
| 最近记录: |