美文网首页服务端
token及session认识总结

token及session认识总结

作者: 生活有方有圆 | 来源:发表于2019-02-17 19:56 被阅读0次

    最近在做token认证,研究了好几天,下面把这些天吸收的知识点做个总结

    密码登录流程

    用户发送密码和用户名
    服务端验证信息,获取相应用户信息

    密码登录问题
    密码相应一个用户,是不会频繁更改的。
    但是如果频繁传送密码进行验证,那么很容易将密码泄露
    所以最好使用一个可控并且频繁变化的凭证来代替密码

    session认证流程

    用户发送密码和用户名
    服务端通过验证后,创建一个session会话,保存用户相关信息,然后将sessionId传给用户
    用户再次访问服务器时带上sessionId,到之前的服务器读取已经存在的session

    jwt token登录流程

    用户发送密码和用户名
    服务端通过验证后,会创建一个token,token可以自包含用户的一些信息,然后返回给用户
    用户需要表明身份的时候,就带上token请求服务端

    session和jwt token认证的优缺点

    session认证
    jwt token认证
    优点:
    没有跨域问题,因为其身份信息是token自带的
    不会受到csrf的攻击
    信息透明,但是有私钥加密
    缺点:
    token泄露,他人可以冒充用户
    token刷新问题
    token比较长,传输比较消耗流量

    session跨域问题

    Session介绍
    由于http是无状态的,所以服务端为了记住一些客户端的信息,需要把信息保存到session中。每个客户最多只有一个session,当再次访问服务端的时候,我们能够通过客户手里的sessionId拿到当前客户的session。session是存储在堆中的,所以是要消耗一定的资源的。

    Session共享问题
    由于session是存储在内存中的,并且每个用户都只有一个,那么假如一个用户访问了A主机后,此时去访问我们集群中的B主机,那么就拿不到A主机上的session。

    cookies攻击

    http无状态
    http为了方便及高效,所以不持久化之前的响应和请求。及响应完本次请求就忘记,然后继续下次请求。

    Cookie介绍

    Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的
    首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器
    发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出
    去。

    也就是说cookie是由服务器指定生成的,或则客户端脚本也可以生成。
    目的是为了维护http的一些状态。

    cookie可以分为内存cookie(会话cookie)和硬盘cookie。
    会话cookie当关闭浏览器,cookie信息就会消失。
    硬盘cookie是根据各自浏览器把cookie信息存储在某个地方,不同浏览器可能存储路径不同,所以不太会共享。

    CSRF攻击
    原理分析:
    在本浏览器中发送一个服务器请求,假如我们浏览器的cookie有缓存这个服务器的认证信息,那么我们请求会自动筛选相应的cookie信息,加到请求头里,这样请求就能够被认为是合法的。

    举例:
    假如我们点开了一个广告的游戏网站,这个网站可能会发起一个上传简书文章的请求,那么当前咱们浏览器的cookie里面有简书的登录凭证,所以这个发布是会成功的。

    随机串和token的区别

    随机串是不带用户信息的,所以只能当作票据来换取用户信息。所以其实还是把用户信息存到服务端。
    假如把随机串持久化到数据库,那么过期更新是个比较麻烦的事情。所以随机串还是面临着数据共享的问题。

    相关文章

      网友评论

        本文标题:token及session认识总结

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