Cookie、Session、JWT
目录
实现方式与原理
存储位置
安全性
应用场景
Cookie、Session 和 JWT(JSON Web Token)都是 Web 开发中用于用户身份验证和会话管理的技术,它们在实现方式、存储位置、安全性等方面存在差异:
实现方式与原理
- Cookie:是服务器发送到客户端(浏览器)并存储的小型文本文件。用户首次访问网站并登录时,服务器生成包含用户标识等信息的 Cookie,通过 HTTP 响应头中的
Set - Cookie
指令发给浏览器。浏览器存储该 Cookie,后续用户再次访问同一网站时,浏览器会在 HTTP 请求头中自动携带该 Cookie,服务器据此识别用户身份 。例如,用户登录某论坛后,论坛服务器会给浏览器发送 Cookie,下次用户再访问论坛,浏览器带着 Cookie,服务器就能认出是该用户。 - Session:是服务器端用于存储用户会话信息的机制。用户登录时,服务器创建 Session 并生成唯一的 Session ID,同时将用户相关会话信息(如用户 ID、登录时间等)存储在服务器内存或数据库中。服务器通过
Set - Cookie
响应头把 Session ID 发送给浏览器存储。后续请求中,浏览器携带 Session ID,服务器根据此 ID 查找对应的 Session 数据来识别用户、验证身份。比如在电商网站购物,登录后服务器创建 Session 记录购物车等信息,通过 Session ID 识别用户操作。 - JWT:是一种开放标准(RFC 7519),以 JSON 对象形式在客户端和服务端安全传输信息。它由头部(包含令牌类型和签名算法等信息)、载荷(包含声明信息,如用户身份、权限、有效期等)、签名(用于验证信息完整性和真实性,通过对头部、载荷等使用密钥和指定算法生成)三部分构成。用户登录成功,服务器生成 JWT 并发送给客户端。客户端后续请求时,将 JWT 放在请求头的
Authorization
字段(常用Bearer <token>
形式 )等位置发送给服务器,服务器验证 JWT 的签名等信息来确认用户身份和权限。像前后端分离的项目中,前端登录后获取 JWT,后续向后端接口请求数据时带上 JWT。
存储位置
- Cookie:存储在客户端浏览器。
- Session:会话数据存储在服务器端,而用于标识会话的 Session ID 存储在客户端浏览器的 Cookie 中。
- JWT:存储在客户端,常见存储位置有浏览器的
localStorage
、sessionStorage
,或者在 HTTP 请求头的Authorization
字段等 。
安全性
- Cookie:安全性相对较低,易被窃取、篡改。虽可通过设置
HttpOnly
(防止 JavaScript 读取 Cookie,降低跨站脚本攻击风险)、Secure
(仅在 HTTPS 连接时传输 Cookie )等属性增强安全,但仍存在跨站请求伪造(CSRF)风险 。例如,攻击者利用用户已登录状态的 Cookie,在其他网站诱导用户发起恶意请求。 - Session:会话数据在服务器端,相对安全。但如果 Session ID 泄露,攻击者可能利用该 ID 冒充用户,存在会话固定攻击等风险 。
- JWT:通过签名机制保证数据完整性和真实性,可结合加密技术提升安全性,一定程度上抵御跨站脚本攻击等。但由于 JWT 的载荷是用 Base64 编码(并非加密),不宜在其中存储敏感信息;若密钥泄露,JWT 安全性将受严重威胁。
应用场景
- Cookie:适用于存储用户偏好(如语言设置、主题偏好)、记录用户浏览历史等简单场景;也常用于传统 Web 应用的会话管理,配合 Session 使用实现用户登录状态保持等 。
- Session:适合传统 Web 应用,尤其是有服务器端渲染、对会话状态管理要求较高的场景,如银行系统的用户登录会话管理,可在服务器端灵活控制会话有效期、存储用户操作记录等敏感信息 。
- JWT:在分布式系统、前后端分离架构、移动应用、微服务架构中广泛应用。比如多个微服务组成的系统中,JWT 便于在不同服务间传递用户身份信息,实现统一认证和授权 。
相关文章:
Cookie、Session、JWT
目录 实现方式与原理 存储位置 安全性 应用场景 Cookie、Session 和 JWT(JSON Web Token)都是 Web 开发中用于用户身份验证和会话管理的技术,它们在实现方式、存储位置、安全性等方面存在差异: 实现方式与原理 Cookie&#…...

TPDS-2014《Efficient $k$-means++ Approximation with MapReduce》
推荐深蓝学院的《深度神经网络加速:cuDNN 与 TensorRT》,课程面向就业,细致讲解CUDA运算的理论支撑与实践,学完可以系统化掌握CUDA基础编程知识以及TensorRT实战,并且能够利用GPU开发高性能、高并发的软件系统…...

地理特征类可视化图像
目录 一、蜂窝热力地图 1. 特点 (1)优点 (2)缺点 2. 应用场景 3.python代码实现 (1)代码 (2)实现结果 二、变形地图 1. 特点 (1)优点 (2)缺点 2. 应用场景 3.python代码实现 (1)代码 (2)实现结果 三、关联地图 1. 特点 (1)优点 (2)缺点 2. 应用场景 3.pyth…...

【Java高阶面经:微服务篇】8.高可用全链路治理:第三方接口不稳定的全场景解决方案
一、第三方接口治理的核心挑战与架构设计 1.1 不稳定接口的典型特征 维度表现影响范围响应时间P99超过2秒,波动幅度大(如100ms~5s)导致前端超时,用户体验恶化错误率随机返回5xx/429,日均故障3次以上核心业务流程中断,交易失败率上升协议不一致多版本API共存,字段定义不…...

DataGridView中拖放带有图片的Excel,实现数据批量导入
1、带有DataGridView的窗体,界面如下 2、编写DataGridView支持拖放的代码 Private Sub DataGridView1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragEnterIf e.Data.GetDataPresent(DataFormats.FileDrop) ThenDim file…...

跨域_Cross-origin resource sharing
同源是指"协议域名端口"三者相同,即便两个不同的域名指向同一个ip,也非同源 1.什么是CORS? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器ÿ…...

Opencv常见学习链接(待分类补充)
文章目录 1.常见学习链接 1.常见学习链接 1.Opencv中文官方文档 2.Opencv C图像处理:矩阵Mat 随机数RNG 计算耗时 鼠标事件 3.Opencv C图像处理:亮度对比度饱和度高光暖色调阴影漫画效果白平衡浮雕羽化锐化颗粒感 4.OpenCV —— 频率域滤波ÿ…...

大疆制图跑飞马D2000的正射与三维模型
1 问题描述 大疆制图在跑大疆无人机飞的影像的时候,能够自动识别相机参数并且影像自带pos信息,但是用飞马无人机获取的影像pos信息与影像是分开的(飞马无人机数据处理有讲),所以在用大疆制图时需要对相机参数进行设置…...
PostgreSQL中的权限管理简介
在 PostgreSQL 中,权限管理是非常重要的,它允许管理员控制用户对数据库对象的访问权限。其中,权限管理是通过角色和权限来实现的。角色可以是用户、组或者其他角色,而权限则控制了角色对数据库对象的访问权限。 1.用户和角色 在…...

ConceptAttention:Diffusion Transformers learn highly interpretable features
ConceptAttention: Diffusion Transformers Learn Highly Interpretable Featureshttps://arxiv.org/html/2502.04320?_immersive_translate_auto_translate=1用flux的attention来做图文的显著性分析。 1.i...

物联网低功耗保活协同优化方案:软硬件与WiFi网关动态联动
目录 一、总体方案概述 二、架构组成 2.1 系统拓扑 2.2 硬件端(MCU + WiFi 模组) 2.3 WiFi 网关 2.4 云端服务器 三、低功耗保活技术设计模式 3.1 模式一:定时唤醒 + MQTT 保活 3.1.1 设备端 3.1.2 优势 3.2 模式二:网关保活代理 + 本地网络唤醒 3.2.1 网关功能…...

LW-CTrans:一种用于三维医学图像分割的轻量级CNN与Transformer混合网络|文献速递-深度学习医疗AI最新文献
Title 题目 LW-CTrans: A lightweight hybrid network of CNN and Transformer for 3Dmedical image segmentation LW-CTrans:一种用于三维医学图像分割的轻量级CNN与Transformer混合网络 01 文献速递介绍 三维医学图像分割旨在从计算机断层扫描(CT…...

光谱相机在地质勘测中的应用
一、矿物识别与蚀变带分析 光谱特征捕捉 通过可见光至近红外(400-1000nm)的高光谱分辨率(可达3.5nm),精确识别矿物的“光谱指纹”。例如: 铜矿:在400-500nm波段反射率显著低于围…...

Autodl训练Faster-RCNN网络(自己的数据集)
参考文章: Autodl服务器中Faster-rcnn(jwyang)复现(一)_autodl faster rcnn-CSDN博客 Autodl服务器中Faster-rcnn(jwyang)训练自己数据集(二)_faster rcnn autodl-CSDN博客 环境配置 我到下载torch这一步老是即将结束的时候自动结束进程,所以还是自己…...
每日两道leetcode(今天开始刷基础题模块——这次是之前的修改版)
1768. 交替合并字符串 - 力扣(LeetCode) 题目 给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的…...
服务器数据迁移终极指南:网站、数据库、邮件无缝迁移策略与工具实战 (2025)
嘿,各位服务器的“大管家”们!咱们在IT江湖闯荡,总有那么些时候,不得不面对一个既重要又可能让人头皮发麻的任务——服务器迁移!可能是因为旧服务器“年事已高”想给它换个“新家”,也可能是业务发展太快&a…...

NFS服务小实验
实验1 建立NFS服务器,使的客户端顺序共享数据 第一步:服务端及客户端的准备工作 # 恢复快照 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# yum install nfs-utils -y # 服务端及客户端都安装 …...
vue 中的v-once
🔰 基础理解 ✅ 语法: <span v-once>{{ msg }}</span>✅ 效果: • 只渲染一次,之后无论数据如何变化,该内容都不会更新。 • 非常适用于静态内容或首次加载后不需要变化的数据。🧪 示例&…...

鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面
发请求展示新闻列表 鸿蒙ArkTS-发请求第三方接口显示实时新闻列表页面 1. 效果图 新闻首页: 点击某一新闻的详情页面(需要使用模拟器才能查看详情页面): 2. 代码 1. key准备 首先需求到聚合网申请一个key,网址如下…...
2025年开源大模型技术全景图
迈向2025年,开源大型语言模型(LLM)生态系统已不再仅仅是闭源模型的补充,而是成为推动AI创新与民主化的核心引擎。其技术全景展现了一个高度模块化、协作共生且快速演进的复杂网络。以下是对提供的蓝图进行更细致的解读,…...

【创造型模式】工厂方法模式
文章目录 工厂方法模式工厂方法模式当中的角色和职责工厂方法模式的实现工厂方法模式的优缺点 工厂方法模式 今天我们继续学习一例创造型设计模式——工厂方法模式。参考的主要资料是刘丹冰老师的《Easy 搞定 Golang 设计模式》。 工厂方法模式当中的角色和职责 简单来说&…...

【MySQL】使用文件进行交互
目录 准备工作 1.从文本文件中读取数据(导入) 1.1.CSV 文件 1.2.设置导入导出的路径 1.3.导入文件 1.4.将数据写入文本文件(导出) 2.从文件中读取并执行SQL命令 2.1.通过mysql监视器执行编写在文件里面的SQL语句 2.2.通过…...

# 大模型的本地部署与应用:从入门到实战
大模型的本地部署与应用:从入门到实战 在当今人工智能飞速发展的时代,大模型(尤其是大型语言模型,LLMs)已经成为自然语言处理(NLP)领域的核心力量。从文本生成、机器翻译到问答系统,…...
布丁扫描高级会员版 v3.5.2.2| 安卓智能扫描 APP OCR文字识别小助手
布丁扫描高级会员版 v3.5.2.2| 安卓智能扫描 APP OCR文字识别小助手 布丁扫描APP是一款集成了先进图像处理与OCR文字识别技术的智能扫描软件。它旨在将纸质文档、照片、名片、书籍等各类实体资料快速…...
可视化大屏全屏后重载echarts图表
问题:可视化大屏点击全屏之后,但echarts图表还是之前的大小,并没有撑满该容器,所以这时候我们需要全屏之后重新加载echarts图表内容 代码如下: // 全屏或非全屏状态下重新加载图表window.onresize () > {//lineCh…...
20200201工作笔记常用命令要整理
工作笔记常用命令: 1.repo常用命令: repo sync -c -j10 2. 常用adb命令 错误: error: device unauthorized. This adbds $ADB_VENDOR_KEYS is not set; try adb kill-server if that seems wrong. Otherwise check for a confirmation dialog on your d…...

Java对象内存模型、如何判定对象已死亡?
一、Java对象内存模型 Java对象在内存中由三部分组成: 含类元数据指针(指向方法区的Class对象)和Mark Word(存储对象哈希码、锁状态、GC分代年龄等信息)。 若为数组对象,还包含数组长度数据。 1,…...
spark任务的提交流程
目录 spark任务的提交流程1. 资源申请与初始化2. 任务划分与调度3. 任务执行4. 资源释放与结果处理附:关键组件协作示意图扩展说明SparkContext介绍 spark任务的提交流程 用户创建一个 Spark Context;Spark Context 去找 Cluster Manager 申请资源同时说明需要多少 CPU 和内…...
ELK简介和docker版安装
使用场景 主要还是给开发人员“打捞日志”用的。 ELK 是由三个开源工具组成的套件(Elasticsearch、Logstash 和 Kibana),主要用于日志的收集、分析和可视化。以下是 ELK 常见的使用场景: 日志集中化管理 收集来自多个服务器或服…...
利用条件编译实现RTT可控的调试输出
在嵌入式开发中,调试信息的输出通常对定位问题至关重要。然而,为了保证代码在正式发布时的性能和体积,调试信息往往需要在不修改主逻辑代码的前提下禁用。 代码一览 // debug.h #pragma once// #define DEBUG#ifdef DEBUG#include "SEG…...