登录验证必不可少的session

作者: 趁你还年轻233 | 来源:发表于2017-12-01 22:31 被阅读393次

    晚上学习了《深入浅出nodejs》的session章节,分享一些简单的收获和发现。

    cookie可以用来记录状态,但是cookie由于前后端都可修改,因此对于敏感数据,cookie就不适用了。
    对于敏感数据,session是更好的解决方案。

    因为session全权由服务端控制,浏览器无法更改session。

    利用cookie和session的技术,才可以将客户与服务器中数据库中的用户数据对应起来,有两种实现方式。
    1.基于Cookie实现用户和数据的映射
    2.通过查询字符串来实现浏览器端和服务器端数据的对应

    Session与内存:高速缓存redis和Memcached
    Session与安全:
    1.私钥。
    2.XSS,伪造用户登录,获取用户cookie,发送cookie到攻击者服务器,获取到用户的session口令,实现密码窃取。

    通俗来说,现在世界上绝大多数网站,都是通过cookie+session的方式实现登录验证。

    分析一下简书的cookies和session

    cookies


    1.其中的remember_user_token设置了remember me功能的过期时间
    2.每次不同登录,_m7e_session会变化
    3.remember_user_token和_m7e_session为HTTP Only,因此document.cookie无法读取到它们。

    session Storage


    1这里的session Storaage的值每次也会变。
    2.值貌似和时间有关。
    做个试验:登录完立即输入Date.now()
    登录session value:1512136002
    现在时间:1512136004287
    由此可以看出,简书的session其实是以秒为单位,而不是毫秒数忽略不计,因为即使计了也没有意义,1000毫秒内多用户并发登录的情况是少数,即使有,阻塞时间也不会太长。用String.prototype.slice()方法即可实现。

    例如上述的session value 1512136002,直接用"1512136002999".slice(0,-3)即可。此处的1512136002999是假设值。

    回过头来分析一下XSS的原理:
    浏览器执行了黑帽子黑客的脚本,将完整的cookie发送到了黑客的服务器,cookie包含document.cookie显示不出来,也就是http-only为真的敏感数据,包通过这个完整cookie,黑客就可以拿到正常服务器的Session口令。用户的完整cookie加上官方服务器的Session都已到手,登录访问还不是分分钟的事。

    思考:
    XSS技术,最关键的部分就是如何截取HTTP数据流中的用户Cookie信息,要知道document.cookie虽访问不到,但是发送到服务器必然是完整的cookie,所以如何用Javascript去获取这个Cookie,就成为了一键很有趣的事情

    如何获取document.cookie中访问不到的cookie?
    如何获取设置了http-only为true的cookie?

    我也不知道...

    That's it !

    期待和大家交流,共同进步,欢迎大家加入我创建的与前端开发密切相关的技术讨论小组:

    努力成为优秀前端工程师!

    相关文章

      网友评论

        本文标题:登录验证必不可少的session

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