简书模拟登陆缺陷!!!

作者: 柯西带你学编程 | 来源:发表于2018-06-11 17:47 被阅读2次

    最近研究cookie和sso比较多,不知道你们有没有发现,你只要登录过简书,不logout,不clear cookie,重新打开页面的话,可以无需登录进入账号,于是激发了我强烈的好奇心做了以下测试,并发现了一个很神奇的问题,不知道简书如何定义这个问题,是bug还是符合预期?@简宝玉

    一、当我们登录的时候,简书在我们浏览器写入了什么cookie?

    • 未登录
    • 登录后
    发现登陆后多了两个cookie,分别是`remember_user_token`和`_m7e_session`,从字面意义上大概就是记录user token和sessionid的cookie
    

    二、是否自动登录和这两个cookie有关系?实验如下:

    • 关闭当前浏览器(浏览器未设置关闭时自动清除cookie),这个时候cookie还是存在的,打开浏览器进入jianshu,发现自动登录
    • 手动将这两个cookie删除,关闭浏览器或者刷新页面,发现用户logout了
      至此可以认定这两个cookie和简书的自动登录有关系(应该是远程的授权service做的验证)

    三、remember_user_token_m7e_session 是否可以复用?

    • 前提:远程授权服务器认为该token和session是active的或者你没有主动logout
    • 过程:尝试着两个不同的浏览器或者两个不同的机器,根据request请求是会将cookie待会给服务器的工作流程,我们手动将cookieremote_user_token_m7e_session使用console写入www.jianshu.com,你需要在已登录的cookie里边手动复制这两个cookie的值出来,因为你会看到他是httpOnly并且是Secure的,document.cookie无法获取,然后使用如下写去另一个浏览器未登录的jianshu首页中www.jianshu.com
    document.cookie = "remember_user_token=你复制出来的值;path=/"
    document.cookie = "_m7e_session=你复制出来的值;path=/"
    
    

    此时浏览器就会多出两个cookie,由于不是在服务器端设置的HttpOnly和Secure,所以你会发现这两个值并没有打钩,不过没有关系,反正都会跟着request去到服务器端,这个时候你只需要重新刷新一下页面,就会发现自动登录了,不知道简书对这个问题怎么定义?

    思考:在远程授权服务器认为我们的token和session失效之前,万一我们的reqeust被代理服务器抓包,并获取header中的两个cookie来手动写入cookie -> 发送请求 -> 自动登录。这样的场景不就很危险吗?@简宝玉

    文章所有步骤都是经过实践检验并可行,若有问题,下方请评论,或者想要学习的也可以一起交流。

    相关文章

      网友评论

        本文标题:简书模拟登陆缺陷!!!

        本文链接:https://www.haomeiwen.com/subject/uliheftx.html