• 7.12理解Cookie与token


    7.12理解Cookie与token

    Cookie与token机制测试

    http协议的特点:

    Http协议是无状态的协议,Cookie与Session机制用于补充跟踪会话状态

    Web Client与Web Server通讯过程简述--->Cookie与Session

    • 由Client发起--->Http Request--->Web Server

    • Web Server--->Http Response+Set-Cookie--->Web Client

    • Web Client--->Http Request+Cookie--->Web Client

    • Web Server--->Http Response--->Web Client

    token机制

    cookie/seesion机制需要在服务端保存大量的seesion信息,造成严重负担,而token机制则避免记录大量信息,采用服务器签发的token完成验证。 1、客户端使用用户名跟密码请求登录 2、服务端收到请求,去验证用户名与密码 3、验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 4、客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 5、客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 6、服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

    发展史

    • 交互式web应用诞生,需要进行会话管理--->由于http请求是无状态的,所以通过服务端给每一个客户端发送一个seesion id用于标识用户身份

      • 由于服务端会做负载均衡,对用户的登录请求进行分发处理。所以如果一开始用户登录的是服务器A那么他的seesion值只会在服务器A保存,当下一次登录的时候被分发到服务器B的时候seesion值是不会带过去的。所以需要进行seesion复制

    • 后来为了统一管理seesion就单独把seesion集中存储到一个地方,让所有的服务器都来访问这个地方的数据。

      • 如果这个地方崩了那么所有系统的用户都需要重新登录一次

    • 由于这个过程的关键在于验证,所以当用户登录了系统便发送一个token令牌,里面包含了user id,用户通过http api访问资源的时候把token通过http header带过来即可

      • 为了防止伪造token,设计了算法进行签名--->用户的token不保存--->token是被明文保存的

      • 当下次发送token过来的时候使用同样的算法去解析token然后去验证user id

        • 相同--->返回资源

        • 不相同--->返回code码

    Cookie

    • Cookie是一种非常具体的东西,是指浏览器里能永久存储的一种数据,是浏览器实现的一种数据存储功能

    • 由服务器生成,发送给浏览器

      • 浏览器把cookie以key-value的形式保存在某个目录文本文件内

      • 下次请求同一网站就会把cookie带过去

        • 特点:

          • 存储在客户端

          • 每个域的cookie数量有限

    Seesion

    • 会话--->服务器给客户端的标识,识别是谁发送给服务端请求的

      • 客户端以cookie的方式保存这种标识

    • 用户访问网站seesion会临时保存在服务端,当用户离开网站的时候seesion会被销毁。

      • 如果web服务器做了负载均衡的话下一个操作请求到另一个服务器上seesion会丢失

    Token

    token是多用户下处理认真的最佳方式--->特征

    • 无状态、可扩展

    • 支持移动设备

    • 跨程序调用

    • 安全

    基于服务器验证方式的一些问题
    1. Seesion:用户每次发起请求服务器都需要创建一个记录存储信息。请求增加内存开销增加

    2. 可拓展性

      1. CORS(跨域资源共享):使用ajax抓取另一个域的资源就可能会出现禁止请求的情况

      2. CSRF(跨站请求伪造):用户在访问指定网站被利用访问到其他网站

    基于Token的验证原理

     

    It's a lonely road!!!
  • 相关阅读:
    JAVA 时间 Date Long String类型之间的转换
    大公司,还是小公司?
    linux 安装ibuspinyin输入法
    vim windows linux文件格式转换
    editplus正则匹配查找替换
    SQL Server2005中逻辑处理阶段的几个新元素
    记centos6下安装redis2.6过程
    git命令行常用操作及在linux下push到github项目中遇到的问题
    记centos6默认python2.6升级2.7及安装easy_install过程
    多级分类的级联查询sql
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15003516.html
Copyright © 2020-2023  润新知