java服务端中客服端抓包与构建地址访问问题

来源:互联网 发布:微商小视频制作软件 编辑:程序博客网 时间:2024/04/29 17:03
在编写客服端时,为实现用户会话跟踪常常使用session和 cookie 相结合的方法
          首先服务其生成session 和身份凭证token
         HttpSession  session= request.getSession();
         String token=UUID.randomUUID().toString().toUpperCase();
         session.setAttribute("token", token);
         
       向客服端写入cookie
         Cookie  tokenCokie=new Cookie("token",token);
         tokenCokie.setMaxAge(1000);
         String  Membertag="memberId";
         Cookie  memberCookie=new Cookie("Membertag",Membertag);
         memberCookie.setMaxAge(1000);
         response.addCookie(tokenCokie);
         response.addCookie(memberCookie); 
       服务端验证与会话跟踪
       String cMembertag=null;
         String cToken=null;
         Cookie[]  cookies= request.getCookies();
         if(cookies!=null){
           for(Cookie cookie:cookies){
               if(cookie.getName().equals("cookie")){
                  cToken=cookie.getValue();
               }else if(cookie.getName().equals("Membertag")){
                  cMembertag=cookie.getValue();;
               }
               
           }
         }
         HttpSession Session = request.getSession(true);
         if(cToken.equals(session.getAttribute("token"))){
          //验证通过
         }else{
           //验证不通过
         }
    这样便实现的客服端的回话跟踪的实现 
 
     但是存在安全风险,
          在客服端登入后由于token是不变的故可以使用Fidder等工具构建请求,重而实现不用使用客服端也可访问服务。
    为解决这样的问题,可以通过构建动态tonken实现具体如下
        首先服务其生成session 和身份凭证token不变
         HttpSession  session= request.getSession();
         String token=UUID.randomUUID().toString().toUpperCase();
         session.setAttribute("token", token);
    向客服端写入cookie
                       获取系统时间戳
         String time= String.valueOf(System.currentTimeMillis());
                    设置客服端tokenCokie为token+";"+time
         token=token+";"+time
         //对token进行加密自密钥为123456 之后将结果设置给客户端的cokie
         token=Decoder(token,"123456")
         Cookie  tokenCokie=new Cookie("token",token);          
         tokenCokie.setMaxAge(1000);
         String  Membertag="memberId";
         Cookie  memberCookie=new Cookie("Membertag",Membertag);
         memberCookie.setMaxAge(1000);
         response.addCookie(tokenCokie);
         response.addCookie(memberCookie);
          客户端对收到的结果进行的   tokenCokie进行解密将的得到时间戳和token
         并将  token+";"+客服端时间戳 的结果进过加密后设置在cookie 作为下一次访问使用
         String cMembertag=null;
         String cToken=null;
         Cookie[]  cookies= request.getCookies();
         if(cookies!=null){
           for(Cookie cookie:cookies){
               if(cookie.getName().equals("cookie")){
                  //取出cToken
                  cToken=cookie.getValue();
                  //取出cToken中的token cToken的值为(Token+";"+时间戳)
                  cToken=Token
               }else if(cookie.getName().equals("Membertag")){
                  cMembertag=cookie.getValue();;
               }
               
           }
         }
         HttpSession Session = request.getSession(true);
         if(cToken.equals(session.getAttribute("token"))){
          //验证通过
             。。。。。。
         为客服端设置新的cookie 值为   token =ession.getAttribute("token")+";"+时间戳
         }else{  
           //验证不通过
         }
          
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 zip压缩的时候空间不足怎么办 电子发票填抬头错了怎么办 发票写错一个字怎么办 普票税率开错了怎么办 税率开错为17了怎么办 电子发票抬头错了怎么办 发票抬头错了一个字怎么办 5月税率开错了怎么办 如果发票是假的怎么办 发票收款人名字写错了怎么办 医院发票名字写错了怎么办 购买方发票联丢失怎么办 市中区超市办理发票怎么办 发票购买薄丢了怎么办 发票领用簿丢了怎么办 摩托车证扣12分怎么办 初中孩孑想扩展单词量怎么办 恒安保险倒闭了怎么办 小麦收割机卸粮筒总是转怎么办 非牛顿体结块了怎么办 非牛顿流体硬了怎么办 玩具枪子弹打到眼睛怎么办 杭州磨床7130噪音大怎么办 步兵太苦还有一年怎么办 检法事业编怎么办最新 河北省事业单位改企编制怎么办 梦飞去虎牙锐雯怎么办 蚂蚁借呗还款钱没到账怎么办 蚂蚁借呗没有按时还款怎么办 新装的win7没有网卡驱动怎么办 3d电影没眼睛怎么办 看vr手机发烫变卡怎么办 vr眼镜头晕想吐怎么办 程序员年龄大了失业怎么办 事业人员编制在机关任职改革怎么办 老公出轨死不承认怎么办 2017年军自考毕业证怎么办 大腿酸痛肌肉萎缩怎么办一 习惯不了军训一起洗澡怎么办 脚着凉了有点痛怎么办 腿着凉了膝盖疼怎么办