打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
同步器令牌防止用户重复提交
用同步器令牌来防止客户端的重复提交,这的确是个好注意!
特别是防止用户在浏览器当中点击后退或者刷新按钮所产生的不良影响。
道理其实很简单,大概流程为:输入请求-->比较值-->处理请求-->生成令牌-->保存令牌-->
准备响应-->外发响应。
在客户请求当中携带服务器前一次响应时发给客户端的令牌,去与服务器端保存的令牌相比较,如果相等,则说明当前是合法提交。而不过不匹配,则可能是重复提交了。
在具体的实现当中以jsp为例,在控制器当中采用servlet来负责管理令牌,将服务器端的令牌保存在session当中,通过每次的请求来更新这个令牌。然后在将要处理的业务逻辑之前判断提交上来的令牌是否合法。如果合法则继续执行,如果不合法,则避免执行正常的操作。
servlet当中生成token代码可如下:
public void saveToken(HttpServletRequest request){
         HttpSession session
=request.getSession();
         String token
=generateToken(request);
         session.setAttribute(Constants.TOKEN,token);
}
检查令牌合法性
public boolean isTokenValid(HttpServletRequest request){
        HttpSession session
=request.getSession();
        String saved
=session.getAttribute(Constants.TOKEN);
        String token
=request.getParameter(Constants.TOKEN);
if(saved.equals(token)){
      
return true;
}

     
return false;
}


在JSP端,通过助手类将当前生成的令牌保存在HTML的表单的隐含域当中。
比如
<input type="hidden" name="TOKEN" value="as8d7j3sk">

通过这种手段实现起来并不十分复杂。当然这只是防止用户提交的手段之一。其他的方法有待大家不断补充。
来源参考:Core J2ee patterns 2 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
表单重复提交的处理方案(其中服务器处理 模拟struts)
在服务器端避免表单的重复提交
JSP内置对象
JSP中的九大内置对象
分享 对request,session,application作用域形象理解
request,session,application,三者比较
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服