zoukankan      html  css  js  c++  java
  • 简书模拟登陆缺陷!!!

    最近研究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://upload-images.jianshu.io/upload_images/11678829-51eacfa8a19c1531.png?imageMogr2/auto-orient/st

  • 相关阅读:
    c++11之智能指针
    SurfaceFlinger与Surface概述
    android GUI 流程记录
    文章收藏
    android performance
    POJ3349
    java中的volatile和synchronized
    [原创]分期还款的名义利率与真实利率
    Java IO 流总结
    telegram
  • 原文地址:https://www.cnblogs.com/CoXieLearnPython/p/9168353.html
Copyright © 2011-2022 走看看