Cookie、Session、Token的区别

有人或许还停留在它们只是验证身份信息的机制,但是它们之间的关系你真的弄懂了么?

发展史:

Coolie:

       Netscape Communications 公司引入了 Cookie 概念,作为在客户端存储状态信息的一种方法。初始目的是为了解决 HTTP 的无状态性,使网站能够记住用户并保持状态。

Session:

HTTP 1.0 引入了基本的会话管理,通过在请求头中添加 "Cookie" 字段来传递会话标识符。

Token:

       随着移动应用和 API 的兴起,基于 Token 的身份验证得到了更多关注和应用。OAuth 2.0 的标准化推动了令牌在 web 开发中的应用,支持无状态的身份验证和授权。


       在以前,你去登录一个网站,没有个人的分别,所以也区不区分也无关紧要,但是随着互联网的发展,互联网越来越重视你是谁?所以cookie就诞生了,它是一个存储在客户端的一小段数据,当用户登录的时候,由服务端发送给客户端并存储在客户端本地,这样就可以验证用户信息

但是这样岂不对程序员美滋滋,我们假设有一个小穷(程序员)还有一个老富(顶级富豪)

账户转钱:

老富:

 小穷:

 有一天,小穷通过技术手段搞到了老富的cookie,结果小穷差点吃公家饭 

 

       基于cookie这种不安全性,session逐渐问世,它是一种会话机制,用户信息存储在服务器上,这样就相对于cookie比较安全

 小穷这时候留下了悔恨的眼泪!!!

       但是随着时代的发展,由于用户越来越多,一台服务器已经扛不住了,单体架构逐渐被淘汰,分布式逐渐登上了历史的舞台,这时候,问题又来了,由于分布式是采取负载均衡的方式采取服务器请求的,所以我们不能仅限于一台服务器进行存储session,总不能每次发送请求的时候都要进行一次身份验证,那么当时就有两种情况可以解决这个问题:

1.单独拎出来一个服务器,专门作为session的验证

2.在每个服务器上都存储一份session

       这两种方式显然对资源的一种浪费,数以千万计的用户的session占用的内存可不是一个小数目,所以我们的下一个主角又登场了——Token

         Token是一种轻量级的身份验证和授权机制,一般是一小段字符串,当每次用户成功登录或请求时,服务器会生成一个Token(用户ID、角色、权限以及一些元数据),通过使用密钥对其进行加密和签名确保安全性,下一次客户端访问时携带Token,服务器用相同的密钥进行解密和检验签名,确保安全性

 使用Token的效果既保障了安全问题又避免了资源浪费

 Token的优点真的数不胜数,列几点:

  • 安全性:经过了层层加密(加密和签名)确保完整性和安全性
  • 无状态:服务器不需要在本地存储会话数据,不需要维护会话状态,更加容易扩展与分布式部署
  • 跨域支持:Token可以通过HTTP请求头、URL参数或者Cookie发送
  • 灵活性:携带自定义的用户信息
  • 性能:无需服务器存储和查询会话状态,提供服务器的性能和响应速度
  • 轻量级:比传统的会话更加轻量级(不需要在服务器上存储状态信息)
  • 可扩展性:方便的扩展以及适应不同的需求
  • 单点登录:登录一次访问多个关联应用
  • 可移植性:不依赖于特定的编程语言

Cookie:

       Cookie是存储在用户浏览器中的小段数据,由服务器发送给客户端并存储在客户端本地。它通常用于持久性存储一些用户相关的信息,如登录凭证、用户偏好设置等,Cookie可以设置过期时间,可以是会话级别的(在用户关闭浏览器后过期)或者是长期的(设置特定的过期时间),由于存储在客户端,Cookie可以在用户访问不同页面时被浏览器自动发送到服务器

Session:

       会话是一种服务器机制,用于跟踪用户在网站上的活动,服务器在用户访问网站时为每个用户创建一个唯一的会话标识(Session ID),这个标识存储在Cookie中或者通过URL参数传递,然后,服务器可以根据会话标识来识别特定的用户,并在服务器端存储用户状态信息,以便跟踪用户的状态和数据,会话数据通常在服务器上存储,因此相对安全

Token:

       Token是一种轻量级的身份验证和授权机制,广泛用于构建于API的 应用和单点登录系统,用户登录后,服务器会颁发一个Token,包含有关用户身份的信息和一些元数据,这个Token被用户保存,并在每次向服务器发送请求时随请求一起发送,服务器可以验证Token的有效性,并根据Token中的信息执行身份验证和授权,Token可以是短期的,也可以是长期的,但是为了安全性通常会有过期时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/90352.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑剪辑用哪个软件比较好?电脑视频剪辑软件分享

在电脑上剪辑视频可以让您更容易地编辑和组织素材,以及添加音频、标题和其他效果。此外,电脑上的剪辑软件通常比手机上的应用程序更强大,使我们可以进行更精细的编辑,并获得更好的最终产品。那么电脑剪辑视频哪个软件比较好用呢&a…

Tomcat 部署优化

Tomcat Tomcat 开放源代码web应用服务器,是由java代码开发的 tomcat就是处理动态请求和基于java代码的页面开发 可以在html当中写入java代码,tomcat可以解析html页面当中的iava,执行动态请求 动态页面机制有问题:不对tomcat进行优…

Sentinel使用实例

不说了,直接上官方文档 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md Sentinel Example 项目说明 本项目演示如何使用 Sentinel starter 完成 Spring Clo…

vuejs 设计与实现 - 快速diff算法

Vue.js 2 所采用的双端 Diff 算法。既然快速 Diff 算法如此高效,我们有必要了解它的思路。接下来,我们就着重讨论快速 Diff 算法的实现原理。 相同的前置元素和后置元素 快速 Diff 算法借鉴了纯文本 Diff 算法中预处理的步骤。 案例: 旧的…

学习助手(安卓)

首先,这是一款人工智能的学习软件,功能非常的强大,进入软件就能看见多种功能,它可以根据大家提供的主题,环境,文体,语言等要求进行写作,还有诗歌创作,也可以帮我们进行内…

Unity3D高级编程:主程手记学习1

第一章 软件架构 Untiy 分层设计 分层后再分治

深度学习笔记(kaggle课程《Intro to Deep Learning》)

一、什么是深度学习? 深度学习是一种机器学习方法,通过构建和训练深层神经网络来处理和理解数据。它模仿人脑神经系统的工作方式,通过多层次的神经网络结构来学习和提取数据的特征。深度学习在图像识别、语音识别、自然语言处理等领域取得了…

[PyTorch][chapter 49][创建自己的数据集 1]

前言: 后面几章主要利用DataSet 创建自己的数据集,实现建模, 训练,迁移等功能。 目录: pokemon 数据集深度学习工程步骤 一 pokemon 数据集介绍 1.1 pokemon: 数据集地址: 百度网盘路径: https://pan.baidu.com/s/1…

【EI/SCOPUS检索】第三届计算机视觉、应用与算法国际学术会议(CVAA 2023)

第三届计算机视觉、应用与算法国际学术会议(CVAA 2023) The 3rd International Conference on Computer Vision, Application and Algorithm 2023年第三届计算机视觉、应用与算法国际学术会议(CVAA 2023)主要围绕计算机视觉、计算机应用、计…

[PyTorch][chapter 50][创建自己的数据集 2]

前言: 这里主要针对图像数据进行预处理.定义了一个 class Pokemon(Dataset) 类,实现 图像数据集加载,划分的基本方法. 目录: 整体框架 __init__ load_images save_csv divide_data __len__ denormalize __g…

数据结构——堆

数据结构——堆 堆堆简介堆的分类 二叉堆过程插入操作 删除操作向下调整: 增加某个点的权值实现参考代码:建堆方法一:使用 decreasekey(即,向上调整)方法二:使用向下调整 应用对顶堆 其他&#…

dirsearch_暴力扫描网页结构

python3 dirsearch 暴力扫描网页结构(包括网页中的目录和文件) 下载地址:https://gitee.com/xiaozhu2022/dirsearch/repository/archive/master.zip 下载解压后,在dirsearch.py文件窗口,打开终端(任务栏…

深入理解索引B+树的基本原理

目录 1. 引言 2. 为什么要使用索引? 3. 索引的概述 4. 索引的优点是什么? 4.1 降低数据库的IO成本,提高数据查找效率 4.2 保证数据库每一行数据的唯一性 4.3 加速表与表之间的连接 4.4 减少查询中分组与排序的执行时间 5. 索引的缺点…

[足式机器人]Part3机构运动微分几何学分析与综合Ch03-1 空间约束曲线与约束曲面微分几何学——【读书笔记】

本文仅供学习使用 本文参考: 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 Ch01-4 平面运动微分几何学 3.1 空间曲线微分几何学概述3.1.1 矢量表示3.1.2 Frenet标架 连杆机构中的连杆与连架杆构成运动副,该运动副元素的特征点或特…

【Stable Diffusion】雨天、湿身

一、Models 1.1、Wet Clothes (Clothing Style) [LoHA] WECL SEE-THROUGH WET WET HAIR BIKINI OR SWIMSUIT UNDER CLOTHES NO BRA BRA VISIBLE THROUGH CLOTHES MISC SHIRTS MISC CLOTHES1.2、Rain 雨 Multiply Style rain style1.3、Wet T-Shirt LORA <lora:wetshirt:…

5.1 web浏览安全

数据参考&#xff1a;CISP官方 目录 Web应用基础浏览器所面临的安全威胁养成良好的Web浏览安全意识如何安全使用浏览器 一、Web应用基础 1、Web应用的基本概念 Web ( World wide Web) 也称为万维网 脱离单机Web应用在互联网上占据了及其重要的地位Web应用的发展&#xf…

最新Kali Linux安装教程:从零开始打造网络安全之旅

Kali Linux&#xff0c;全称为Kali Linux Distribution&#xff0c;是一个操作系统(2013-03-13诞生)&#xff0c;是一款基于Debian的Linux发行版&#xff0c;基于包含了约600个安全工具&#xff0c;省去了繁琐的安装、编译、配置、更新步骤&#xff0c;为所有工具运行提供了一个…

计算机竞赛 python 机器视觉 车牌识别 - opencv 深度学习 机器学习

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于python 机器视觉 的车牌识别系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 &#x1f9ff; 更多资…

【量化课程】02_4.数理统计的基本概念

2.4_数理统计的基本概念 数理统计思维导图 更多详细内容见notebook 1.基本概念 总体&#xff1a;研究对象的全体&#xff0c;它是一个随机变量&#xff0c;用 X X X表示。 个体&#xff1a;组成总体的每个基本元素。 简单随机样本&#xff1a;来自总体 X X X的 n n n个相互…

梯度下降介绍

什么是梯度 梯度是微积分中一个很重要的概念&#xff0c;在单变量的函数中&#xff0c;梯度其实就是函数的微分&#xff0c;代表着函数在某个给定点的切线的斜率&#xff1b;在多变量函数中&#xff0c;梯度是一个向量&#xff0c;向量有方向&#xff0c;梯度的方向就指出了函…