Ordinary programmer 2020-07-04 11:20 采纳率: 33.3%
浏览 528

JSESSIONID是如何加密的,网站登录加密问题?

访问https://passport2.chaoxing.com/fanyalogin
,登录时提供一个JSESSIONID和route(之前访问,服务器在set-Cookiez中返回的),登录成功之后并没有在set-Cookie中见到JSESSIONID和route了,

图片说明

但是浏览器马上继续访问网站时,JSESSIONID和route竟然莫名其妙更改了,不是 第一次登录成功时提供的JSESSIONID和route,而是另外一个数值,百思不得其解

图片说明

经过测试,后台验证是否登录成功是判断 JSESSIONID和route,缺一不可,JSESSIONID是如何对登录时提供的JSESSIONID加密的呢?

提供一个python代码,按正常的抓包登录成功之后,用session保持会话或者用提出cookie直接request访问,访问新网址应该可以正常得到数据,结果是提示:您还未登录

s = requests.session()
loginUrl = "https://passport2.chaoxing.com/fanyalogin"
data={
    'fid':'-1',
    'uname':'15216130517',
    'password':'YXNkNTIw',
    'refer':'http%3A%2F%2Foffice.chaoxing.com%2Ffront%2Fthird%2Fapps%2Freserve%2Funified%2Fcode%3Fid%3D501%26reserveId%3D501%26fidEnc%3D797928204c34e200%26enc%3Df866b3f33f20c1cfb85bd6021e85b11b%26indexEnc%3Dd8b3f90fb0364e3c8e43478f12899eff',
    't':'true'
}
r = s.post(loginUrl, data) # 登录
print(r.json())
print(r.headers)
print(s.cookies)

orderUrl = "http://office.chaoxing.com/data/apps/reserve/submit/reserve"
data={
    'itemId':'2469',
    'reserveId':'501',
    'date':'2020-07-06',
    'startTime':'2020-07-06 07:30',
    'endTime':'2020-07-06 22:00',
    'remark':'',
    'intervalIdStr':'104959'  # 104964
}
r=s.post(orderUrl,data)
print(r.json())

再提供一下JS代码,并没有修改Jsessionid和route

$.ajax({ 
        url: "/fanyalogin",
        type:"post",
        dataType : 'json',
        data:{ 'fid':fid,'uname':phone,'password':pwd,'refer':refer,'t':t},
        success: function(data){
            if(data.status){
                if(data.tochaoxing){
                    window.location = "/towriteother?name="+encodeURIComponent(data.name)+"&pwd="+encodeURIComponent(data.pwd)+"&refer="+data.url;
                }else{
                    window.location = decodeURIComponent(data.url);
                }
            }else{
                var msg = util.isEmpty(data.msg2) ? "登录失败" : data.msg2;
                msg = ("密码错误" == msg || "用户名或密码错误" == msg) ? "手机号或密码错误" : msg;
                util.showMsg(true,"err-txt",msg);
            }
        }
    });
  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2020-07-04 12:45
    关注
    这个涉及到 Http 请求的一些基础只是,首次访问某个网站的时候,浏览器会自动生成一个 JSESSIONID 带着传递给服务器。
    但是这个不够安全,通常服务器的做法是重新生成一个新的 JSESSIONID 返回给前端。
    所以,第一个疑问,浏览器继续访问网站带着的是新的 JSESSIONID 应该是服务器在登陆后生成的新的。
    至于加密,这个应该是 https 请求底层做的,它会对传输内容进行加密,所以抓包是无法解密 https 通信正文的。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波