• 彻底搞懂cookie、session和token


    一、Cookie

    误解:cookie是缓存

    1、什么是cookie?

            cookie的本质是一小段的文本信息,格式是字典key=value。cookie的名称不是固定的是由开发自定义的。

    2、cookie的分类

            会话cookie:保存在内存,当浏览器的会话关闭之后自动消失;

            持久cookie:  保存在磁盘,只有当失效时间到期后才会自动消失;

    3、cookie的格式

            {name:值,value:值, Domain:域名, Path:路径, expires:失效时间,size:大小,...}

    4、查看cookie方式:

            1、查看当前网页的cookie: F12 -> application -> cookie;

            2、查看浏览器所以网页的cookie: 浏览器 -> 设置 -> 隐私设置与安全性 -> 查看所有cookie和网站数据

    5、cookie鉴权(鉴定权限)的原理

            1、客户端第一次请求服务器B,服务器产生cookie,然后通过响应头的set-Cookie字段把cookie的信息返回给客户端;

             2、客户端从第二次开始访问服务器B,在请求头的cookie中都会自动带上该Cookie信息,从而实现鉴权。

    6、Cookie存在的问题

            因为cookie保存在客户端,cookie的数据可以在客户端被截获。对于一些机密的数据,比如用户名和密码、银行卡号和支付密码、身份证号码登信息。

            所以演进了新的技术,使用Cookie保存不重要的数据信息,然后再使用Session来保存重要的数据。

    二、Session

            session是通过cookie来传值的。

    1、session鉴权原理

            当客户端第一次登录服务器的时候,服务器会创建一个session来保存用户的重要信息,并起名为sessionId(具体命名由开发决定,一般是一段比较长的经过加密的字符串)。然后通过cookie的鉴权方式实现session的鉴权。

    2、session的问题

            造成服务器性能瓶颈

    三、Token令牌

    1、 token两种获取方式:

            1、登录之后,自动生成token

            2、通过一个特定的获取获取token的接口去获取token

    后面的每一次请求都必须带上token实现鉴权。

    2、token加码方式

            1、对称加密: EDS、AES

            2、双钥加密: RSA,一般用于金融项目里面做签名

            3、只加密不解密:MD5、SHA系列

            4、编码格式: Base64

    3、token类型

            1、access_token:时效15分钟到2小时;

            2、refresh_token: 时效15天

    面试题:cookie、session和token的相同点和差异?

    相同点:都是用来实现身份验证(鉴权)的,都是由服务器产生的;

    差异:

            1、cookie是保存在客户端,session是存储在服务器;

            2、session保存在服务器的内存中,默认是30分钟;token是保存在服务器的数据库中,持久的。

     

     

  • 相关阅读:
    华为云云耀云服务器L实例评测|部署在线影音媒体系统 Jellyfin
    对称、群论与魔术(十一)——魔术《百变箭头》等和系列总结
    小学生python游戏编程arcade----原码分析
    [项目管理-29]:SMART项目计划制定与PDCA闭环监控,珠联璧合,双剑合一。
    【Java】面试笔记_接口抽象类_重载与重写
    计算机毕设(附源码)JAVA-SSM家教中心管理系统
    VIM 编辑文件命令
    Ubuntu22.04本地部署PaddleSpeech实验代码(GPU版)
    检测到目标URL存在http host头攻击漏洞
    GO语言-锁操作
  • 原文地址:https://blog.csdn.net/liuqinhou/article/details/126418762