当前位置: 首页 > news >正文

cookie,session,token 的区别

      • 解决什么问题?
      • Cookie(客户端存储)
          • 问题来了
      • Session(会话)
          • 解决的问题
          • 问题来了
      • token(令牌)
          • 解决的问题
          • 问题:token是无状态的
            • 如何解决?

解决什么问题?

  • 解决http无状态的问题,说简单点就是用户身份的验证

举个例子:

张三在银行里面存1块钱,第二天张三去银行里取1块钱,银行就问你怎么证明你是张三?,你怎么证明你在这里存了1元?

http是无状态的,他也不知道你之前在干了什么

Cookie(客户端存储)

浏览器自动支持的储存用户访问的信息的,数据储存在客户端

举个例子:
张三在银行里面存1块钱,然后银行给张三打了个存条,(姓名:张三;存款 : 1 元;有效期 1 天)

第二天张三去银行里取1块钱,就把存条给银行,银行核验存条,就给张三 1 元

问题来了

问题 1:

张三在银行里面存1块钱,然后银行给张三打了个存条,(姓名:张三;存款 : 1 元;有效期 1 天)

回家的时候存条被李四看见了,李四做了一个一模一样的存条(姓名:张三;存款 : 1 元;有效期 1 天)

第二天李四去银行里取张三的1块钱,就把存条给银行,银行就给李四 1 元

问题 2:
张三在银行里面存1块钱,然后银行给张三打了个存条,(姓名:张三;存款 : 1 元;有效期 1 天)

回家的时候偷偷将存条的数字改成 2 元(姓名:张三;存款 : 2 元;有效期 1 天)

第二天张三去银行里取钱,就把存条给银行,银行核验存条,就给张三 2 元

就是 cookie 的数据容易泄露或者被篡改的问题.

Session(会话)

  • 定义:Session 是服务器端保存的用户状态信息。每个用户的会话在服务器端有一个唯一的标识(通常是 Session ID)。
解决的问题
  • 主要是为了解决cookie(客户端储存)容易被篡改与泄露的问题

举个例子:

张三在银行里面存1块钱,然后银行有一个记账本,然后记录,(序号 001,姓名:张三;存款 : 1 元;有效期 1 天);然后给张三一个小票(001)

第二天张三去银行里取钱,就把小票(001)给银行,银行根据小票查询账本找到张三的存款记录,给张三 1 元

问题来了

现在银行越来越大,开了很多子银行,今天张三去银行的 1 号分行存 1 元, 明天到 2 号分行取钱的时候找不到他的存款记录.

就是服务器拓展问题,服务器拓展的时候,不同服务器的数据不是共享的.因此 session 也不是共享的

所以

  1. 要么使用一个共享的空间(MySQL,redis 这样的数据库),
  2. 要么就把数据给用户持有,但是用户持有又会有安全问题

token(令牌)

用户持有的访问令牌

解决的问题
  • 解决用户持有数据的安全问题
    原理: 数据进行加密处理

举个例子:

  • 现在银行做了一个密码本
    • 将客户的存条进行加密,没有密码本,就无法看懂存条的内容,也就无法修改

张三在银行的 1 号分行里面存1块钱,银行先开了个存条,(姓名:张三;存款 : 1 元;有效期 1 天),然后讲存条进行加密变成了一个加密存条(************),然后给张三,然后告诉张三,拿着这个可以到任何一家银行取到钱

第二天张三去银行的二号分行里取钱,就把加密存条(************)给银行,银行先通过密码本进行解密,发现内容是(姓名:张三;存款 : 1 元;有效期 1 天),就给张三 1 元

问题:token是无状态的

token是无状态的,除了自动过期,无法强制过期(失效)

如何解决?
  1. 使用session的方式,如果有问题在服务端删除(过期)他的session.
  2. 采用黑名单的方式.

举个例子:

张三在银行的 1 号分行里面存1块钱,银行先开了个存条,(姓名:张三;存款 : 1 元;有效期 1 天),然后讲存条进行加密变成了一个加密存条(************),然后给张三,然后告诉张三,拿着这个可以到任何一家银行取到钱

这时张三犯法了(他的一块钱是骗来的),要冻结张三的所有资产,这时候必须通知每个银行,张三有问题,不能取走 1 元钱

这时候银行推出一个黑名单,每个人要取钱的时候先检查是否在黑名单中,如果在就无法操作.

相关文章:

cookie,session,token 的区别

解决什么问题?Cookie(客户端存储)问题来了 Session(会话)解决的问题问题来了 token(令牌)解决的问题问题:token是无状态的如何解决? 解决什么问题? 解决http无状态的问题,说简单点就是用户身份的验证 举个例子: 张三在银行里…...

基于OpenAI Whisper AI模型自动生成视频字幕:全面解析与实战指南

在数字化时代,视频内容已成为信息传播的重要载体。然而,为视频添加字幕却是一项繁琐且耗时的工作。幸运的是,随着人工智能技术的飞速发展,特别是OpenAI Whisper模型的推出,我们有了更加高效、智能的解决方案。 一、Op…...

物理学天空的两朵乌云——量子论与相对论

物理学天空的两朵乌云——量子论与相对论 爱因斯坦的青春与科学的辉煌起点 提到爱因斯坦,我们往往会联想到一个经典的形象——乱糟糟的头发,叼着烟斗,脸上满是岁月的皱纹。然而,这张深入人心的照片并不是他科学创造力的象征。实…...

聚类之轮廓系数

Silhouette Score(轮廓系数)是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。 公式 对于一个数据点 i: a(i): 数据点 i 到同簇内其他点的平均距离(簇内不相似度&#xff…...

Jenkins 构建流水线

在 Linux 系统上安装 Jenkins 服务,以及配置自动化构建项目 前置准备环境:docker、docker-compose、jdk、maven 一、环境搭建 1. Jenkins 安装 (1)拉取镜像 # 安装镜像包,默认安装最新版本 docker pull jenkins/jen…...

RTK部分模糊度固定测量流程图

部分模糊度剔除常用测量: 周跳或失锁时间优先剔除;按俯仰角剔除;按浮点模糊度协方差大小剔除模糊度;按信号强度剔除卫星;...

力扣-数据结构-2【算法学习day.73】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...

操作系统导论读书笔记

目录 虚拟化抽象:进程抽象:进程概念 虚拟化 抽象:进程 本章讨论操作系统提供的基本的抽象—— 进程。进程的非正式定义非常简单:进程就是运行中的程序。程序本身是没有生命周期的,它只是存在磁盘上面的一些指令&…...

基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio

0. 研究背景 在外呼系统中,我们的后台管理系统通常要对电话录音的内容进行提取和分析。那么说到分析,我们就要对录音中的两个人的对话进行分离,然后分别分析,比如分析客户是否有合作的意愿,分析客服讲的话术是否合理&…...

如何使用流式渲染技术提升用户体验

提示:记录工作中遇到的需求及解决办法 文章目录 什么是流式渲染?Node.js 实现简单流式渲染声明式 Shadow DOM,不依赖 javascript 实现react 实现流式渲染总结提示:以下是本篇文章正文内容,下面案例可供参考 什么是流式渲染? 流式渲染主要思想是将HTML文档分块(chunk)…...

【接口自动化连载】使用yaml配置文件自动生成接口case

直接上干货撸代码,有一些是通用的工具类代码,一次性封装永久使用,期待大家的关注,一起加油!!! 配置文件 根据不同的业务需求进行配置,例如Goods服务、Order服务分开配置&#xff0…...

前端安全 常见的攻击类型及防御措施

1. 跨站脚本攻击(XSS) 描述:跨站脚本(XSS:Cross-Site Scripting)是一种安全漏洞,允许攻击者向网站注入恶意客户端代码。该代码由受害者执行从而让攻击者绕过访问控制并冒充用户。XSS攻击可以分…...

来道面试题——CopyOnWriteArrayList

原理 初始化时候,CopyOnWriteArrayList内部维护了一个可变数组,用于存储元素当执行数据变更操作的时候,会先创建一个原数组的副本,在副本上进行写操作,修改副本中的元素。写操作完成之后,把原数组的引用指…...

【Rust自学】5.1. 定义并实例化struct

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 5.1.1. 什么是struct struct的中文意思为结构体,它是一种自定义的数据类型,它允许程序为相关联的值命名和打包&am…...

React 生命周期完整指南

React 生命周期完整指南 1. 生命周期概述 1.1 React 16.3 之前的生命周期 初始化阶段 constructorcomponentWillMountrendercomponentDidMount 更新阶段 componentWillReceivePropsshouldComponentUpdatecomponentWillUpdaterendercomponentDidUpdate 卸载阶段 componentWil…...

python中os._exit(0) 强制关闭进程后来杀死线程

在 Python 中调用 os._exit(0) 会强制终止整个进程,包括所有正在运行的线程。以下是详细解释: os._exit(0) 的行为 立即终止进程:os._exit() 函数会立即终止当前进程,不会执行任何清理操作,如调用清理处理程序&#…...

LeetCode:257. 二叉树的所有路径

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:257. 二叉树的所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根…...

RSICV国产芯片之CHV208

1. 芯片选型分析的对比维度 分析或者对标应用的芯片替代思路 1.1 内核/主频/存储空间支持 内核能力/指令集支持(考虑工具链兼容性); 主频:对比计算能力是否满足基本要求 存储:内存--数据搬移空间决定数据运算的…...

理解神经网络

神经网络是一种模拟人类大脑工作方式的计算模型,是深度学习和机器学习领域的基础。 基本原理 神经网络的基本原理是模拟人脑神经系统的功能,通过多个节点(也叫神经元)的连接和计算,实现非线性模型的组合和输出。每个…...

Android 之 List 简述

一、简单创建方式 Android 开发中&#xff0c;列表有很多种类&#xff0c;如ArrayList、LinkedList、List、MutableList等&#xff0c;创建列表的方式如下所示&#xff1a; fun listDemo() {// 使用 listOf 创建不可变的空列表val list listOf<Int>()val list1 listOf…...

WPS JS宏利用Fetch API实现网页数据抓取与Excel自动化处理

1. 为什么需要网页数据抓取与Excel自动化 在日常办公中&#xff0c;我们经常需要从各种网站获取数据并整理到Excel表格中。比如市场人员需要抓取竞品价格、财务人员需要获取汇率数据、运营人员需要统计社交媒体互动情况。传统做法是手动复制粘贴&#xff0c;不仅效率低下&#…...

从玩具到工具:用Unity Vuforia给老旧产品手册做个‘AR说明书’(实战案例分享)

从玩具到工具&#xff1a;用Unity Vuforia给老旧产品手册做个‘AR说明书’&#xff08;实战案例分享&#xff09; 想象一下&#xff0c;当客户翻阅一本印刷精美的工业设备手册时&#xff0c;只需用手机扫描页面上的产品示意图&#xff0c;就能在屏幕上看到设备内部结构的3D拆解…...

【S32DS实战】S32K311 PIT定时器与IntCtrl_Ip中断联调:从配置到回调的完整流程解析

1. S32K311开发环境与硬件基础 如果你正在使用NXP的S32K311芯片做开发&#xff0c;那PIT定时器和中断控制绝对是必修课。我最近在汽车电子项目里就用这个组合实现了精确的传感器数据采集&#xff0c;实测误差可以控制在微秒级。先说说我的开发环境配置&#xff1a; 硬件&#x…...

内存泄漏的定位技巧:以Java应用为例

在复杂的软件系统中&#xff0c;内存泄漏犹如一颗隐形的定时炸弹&#xff0c;其破坏力随着系统运行时间的增长而累积。对于软件测试从业者而言&#xff0c;掌握高效、精准的内存泄漏定位技巧&#xff0c;不仅是保障系统稳定性的关键&#xff0c;更是提升测试深度与专业性的重要…...

Flutter鸿蒙应用开发:数据分享功能实现

&#x1f525;Flutter鸿蒙应用开发&#xff1a;数据分享功能实现&#xff08;macOSDevEco Studio&#xff09; 欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net &#x1f4c4; 文章摘要 本文为Flutter for OpenHarmony跨平台应用开发系列实…...

MacOS极简部署OpenClaw:5分钟连接Phi-3-vision-128k-instruct模型

MacOS极简部署OpenClaw&#xff1a;5分钟连接Phi-3-vision-128k-instruct模型 1. 为什么选择OpenClawPhi-3组合 去年第一次听说AI能直接操作我的电脑时&#xff0c;我本能地感到不安——让一个云端模型控制本地文件系统&#xff1f;这听起来就像把家门钥匙交给陌生人。直到发…...

日志系统整体设计步骤以及功能函数梳理

首先到底要做一个什么东西&#xff1f;我们要造一个 C 高并发异步日志库&#xff0c;功能如下&#xff1a;用 LOG_INFO << "xxx" 这种简单写法自动带&#xff1a;时间、级别、文件名、函数名、行号支持级别过滤&#xff08;TRACE/DEBUG/INFO/WARN/ERROR/FATAL&…...

单片机老鸟的汇编优化:给那个255上限的脉冲计数器升个级

单片机老鸟的汇编优化&#xff1a;给那个255上限的脉冲计数器升个级 在嵌入式开发领域&#xff0c;脉冲计数是一个经典而实用的功能模块。许多开发者都曾用51单片机实现过基础版本——通过T1计数器接收脉冲信号&#xff0c;将计数值显示在数码管上。但当我们翻看这些"教科…...

CloudCompare点云处理实战指南(一):从基础操作到高程赋色

1. 初识CloudCompare&#xff1a;点云处理的瑞士军刀 第一次打开CloudCompare时&#xff0c;你可能和我当初一样被满屏的英文界面吓到。但别担心&#xff0c;这款开源软件就像点云界的Photoshop&#xff0c;功能强大却容易上手。我处理过上千个激光雷达扫描项目&#xff0c;从建…...

短剧小程序三端互通:微信 / 抖音 / 快手数据同步,会员一键通用

短剧行业已进入全域流量、多端变现的时代。只做微信&#xff0c;公域起量慢&#xff1b;只做抖音快手&#xff0c;私域难沉淀、风控风险高。真正能长期盈利的玩家&#xff0c;都在布局三端互通—— 微信、抖音、快手小程序数据实时同步&#xff0c;会员权益一键通用&#xff0c…...