Session、Cookie、JWT详解

Cookie、Session、JWT的详解 基本概念 认证(Authentication) 验证当前用户的身份 授权(Authorization) 用户授予第三方应用访问该用户资源的权限(session, cookie, token, OAuth) 凭证(Credentials) 实现认证和授权的媒介 由于 http 是无状态的协议,每个请求是独立的,服务端无法确认当前请求者的身份,因此为了实现服务器和浏览器的会话跟踪,就需要使用 c... 阅读详情

Cookie和Session的产生原因

为什么会有Cookie和Session,这是一个自然发生的事情,平时在进行开发时,通常使用HTTP或HTTPS协议发送请求到服务端,而学过计算机网络的都知道,HTTP协议是一种无状态的协议,服务端无法从请求本身知道请求方的相应信息状态,简单说就是请求对于服务端来说都是一视同仁的。这就无法满足实际的开发需求,所以就出现了Cookie和Session,这是HTTP协议无状态所引起的一些问题的补充。

Session简介

Session是存在服务端的,每当客户端请求服务端,服务端就会分配一个内存空间专门存储请求对象的状态等信息,这就是Session,通常我们利用Session存储一些客户端的状态,操作等基本信息,它的底层数据结构一般为线程安全的哈希表(比如Java中的ConcurrentHashMap)。

Session的工作原理与局限

举个例子,客户端A和服务端B,A向B首次请求,当B收到A的请求时,会针对这个请求分配相应的空间存储Session对象,同时产生一个sessionId,然后在响应头中设置Set-Cookie:JSESSIONID=****(上述提到的sessionId),在响应A请求时使A在A的本地设置一条存有SessionId的Cookie信息,同时默认过期时间为A与B的会话结束。然后A再向B请求时,就会在请求头上都带有Cookie信息,然后B通过分析Cookie信息得到sessionId,就可以知道这是A发来的信息,从而可以唯一标识A。
但是这个机制在高可用场景下存在一定的问题,还是刚才的例子,为了保证高可用,我们通常将服务端B多实例化,然后做相应的负载均衡等操作,分为实例B1,B2,B3等。这样就产生SessionId很难在这些实例中共享的问题,从而造成Session的丢失。

Cookie简介

简单来说就是服务端发送到浏览器端的一个数据。用于标识客户端身份。主要应用场景有很多,常见的比如用户操作记录等。

Cookie的工作原理

和上述的Session工作原理关联,客户端接收到服务端的响应时,照Set-Cookie的命令设置相应的Cookie并将其放在每次请求的请求头。
Cookie分为会话Cookie和持久Cookie,前者在浏览器关闭时销毁,不含过期时间,存在内存,后者则含有过期时间存入磁盘,当时间到则不可用。

安全性原理

根据凡是客户端的都是不安全的特性,无论是HTTP还是HTTPS,我们都不应该把敏感信息存入到Cookie中。举个简单的跨站脚本攻击的例子,有些情况下,HttpOnly的属性没有被设置,则有风险会被窃取Cookie。

作用域

所谓作用域就是Cookie能够发送到的链接信息。我们可以在Domain和Path中查看。
在Doamin中设置了域名,则也可以访问子域名。因此在做单点登录SSO的时候,我们通常要注意的是设置Cookie时应该将Cookie存储到第一级域名下。不然会造成跨域问题(基于浏览器同源策略,具体自行搜索了解一下)。
至于Path的话,只是形式变了,变成了路径的显示,和上面同理,设置了Path的目录,则该目录下的子目录都可以访问。

Cookie被禁用的场景

多做一个处理,在Cookie无法被设置的场景下,可以将SessionId写入URL中。从URL中获取SessionId。

JWT(JSON Web Token)与上述CookieSession的异同

相同之处

都是为了对用户做的一个状态存储和身份验证的机制。

不同之处

先要介绍一下JWT,通过JWT的全称字面意思理解就是Json格式的令牌。它之间存储的信息是经过数字签名的(因此具有密码学保证,具有可信任性)。可以根据使用的需求切换不同的密码算法进行签名。
那么与Cookie、Session机制的不同是什么呢?主要是JWT除了认证功能外,还有存储信息的功能,因为上述提到的安全特性,它可以安全的传输信息,因此可以将一些基本信息存储进去并且不必担心篡改的问题。(数字签名的一个特性就是防抵赖,防篡改)
还有对跨域认证的支持,JWT能够通过多个节点进行跨域认证,作跨域处理的成本更低。

JWT的构成

简单来说主要是三部分,Header、Payload、Signature拼接在一起。下面分别介绍

Header

通常情况下是两部分,alg属性和typ属性构成,其中alg顾名思义就是所采用的密码算法,常见的有SHA256,RSA等经典签名算法。而typ属性则主要是指定类型,默认为JWT。

Payload

主要是对客户端身份或是所需数据的声明。其中声明分为三种,registered、public、private的三种类型。
registered声明主要包含签发人,过期时间,主题,可发送方,生效时间与签发时间的部分。
public声明则字面意思理解可以随意添加信息,但是一般不添加敏感信息,因为public处的信息不安全,可以在客户端解密。
private声明则属于自定义声明,用于各方共享信息。

signature

英文理解一下就知道是签名信息,主要由三部分构成,header,payload,secret。
熟悉密码学基础的应该知道主要用于验证JWT的身份,防止篡改。这部分主要用于签名。

如何选择

SSO单点登录场景下推荐JWT,还有某些提供服务的业务场景下,由于很多第三方的api接入与提供,使用JWT既可以方便的解决跨域,还可以做白名单黑名单的校验。

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南 本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。 阅读详情

相关推荐

ComfyUI节点流实战:用Wan2.1制作电商短视频全流程(附人物/商品模板)

本文提供了一份详尽的ComfyUI实战教程,指导用户如何利用通义万相Wan2.1图生视频模型,高效制作适用于抖音等平台的电商短视频。内容涵盖从环境部署、核心工作流搭建,到针对服装、3C数码等品类的高级提示词模板与参数调优,旨在帮助电商从业者快速生成高质量、高保真商品展示视频,显著提升内容生产效率。

potato的博客 1279

JWT、Cookie、Session

Cookie 定义:是由服务器端生成,发送给浏览器,浏览器会将cookie中key/value保存到某个目录下的文本文件内,下次请求同一网站时将自动发送该cookie给浏览器 特点: 1、是以键值队的格式存储数据的 2、不同域名之间的cookie是不能互相访问的 3、当浏览器请求某网站时,会将所关联的cookie发送给浏览器 Session 应用:对于一些相对于很敏感的信息,一般是由session保存在服务器端进行状态保持 Django项目默认...

m0_61504888的博客 263

MIA文献阅读 —— 深度学习在医学图像分析中的最新进展及临床应用【2024】_再现性;深度学习

coderVAEVAEVAE) (Kingma威林,2014)在概率性的工作方式学习观测数据之间的映射空间x∈Rmx∈R^mx∈Rm 和潜在的空间z∈Rnmnz∈Rn(m>>n)。作为一个潜变量模型,VAEVAEVAE制定这个问题作为观察样品的最大化对数似logpxlog∫px∣zpzdzpx∣zp (x | z)p(x∣z)可以很容易地使用神经网络建模,和pzp (z)

2401_84181704的博客 1242

Cookie、Session、Token、JWT详细介绍

Cookie、Session、Token详细介绍

AN_NI_112的博客 1662

高通平台power_supply 框架下添加第三方充电IC的驱动方法

1.power_supply电源框架介绍: power supply framework在kernel/drivers/power/下。内核抽象出来power supply子系统为驱动提供了统一的框架。 功能包括: 1.抽象PSY设备的共性,向用户空间提供统一的API; 2.为底层PSY驱动的编写,提供简单、统一的方式,同时封装并实现公共逻辑。 power supply class位于d...

Change 1万+

通信原理期末考试试题及答案

五、(总分12分)设某信道具有均匀的的双边噪声功率谱密度在该信道中传输抑制载波的单边带(上边带)信号,并设调制信号m(t)的频带限制在5K HZ,而载波为100 K HZ,已调信号的功率为10KW。:(1)单边带信号的载频为100kHz,带宽B=5kHz,为使信号顺利通过,理想带通滤波器的中心频率为。8、对最高频率为fH的调制信号m(t)分别进行AM、DSB、SSB调制,相应已调信号的带宽分别为。7、设调制信号为f(t)载波为,则抑制载波双边带调幅信号的时域表达式为,频域表达式为。

qq_67692062的博客 2392

Cookie/JWT的区别和联系

Cookie/JWT的区别和联系 1、cookie 1.1、什么是cookie ​ cookie是保存在用户浏览器端,用户名和密码等明文信息 1.2、cookie特点 HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。 HTTP Cookie(也叫 Web Cookie 或浏览器 C

weixin_43393670的博客 3726

单细胞marker基因表达密度图-(还有一个包装函数)

我们借助Nebulosa,将上面的过程包装为一个函数,还是那句话,受累麻烦的事我们来解决,您轻松即可,先看看函数参数:需要注意的是,如果你只想框选某一类celltype,理想模式是这群celltype是单独聚类的,没有散落在其他类群,否则将会全部框选,效果不好,建议使用AI/PS添加。需要注意,这里我算是投机取巧了,用了一个和这个作图毫无关系的包ggnetwork,主要的目的是用他的theme_blank()主题,一次性将所有清空,当然也可以自己慢慢写,不过有现成的,为啥不用呢?这质感不就上去了嘛。

qq_42090739的博客 1367

Cookie、Session和JWT

JSON Web Tokens(缩写 JWT)是目前最流行的跨域认证解决方案[1],解决了Session验证资源消耗和扩展性差的缺点。其官网是:首先,JWT的组成包括三个部分 :Header部分:主要包括alg属性和typ属性。alg表示签名算法(algorithm),默认是HMAC SHA256(写成HS56);typ表示令牌(token)类型(type),JWT令牌统一写为JWT。),此处为:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9。

weixin_61933613的博客 1083

DA14531之如何Debug(在线调试、Jlink仿真、串口打印)

在线调试和串口打印调试。在线调试是Keil软件配合Jlink编译、烧录、仿真为一体的,其操作包括:运行、停止、打断点,单步运行等。而串口打印调试,只需打开相关配置,让arch_printf()函数正常输出串口数据。若想在初始化完成后打印arch_printf(“goto Loop\r\n”);波特率为115200,接收到串口消息goto Loop。连好线后,点击仿真按钮,在线Jlink调试。

hejinwu1314的博客 1792

自抗扰控制(ADRC)理论与工程实践:8.2 模糊ADRC、神经网络ADRC等智能融合变体

智能融合ADRC变体概述 自抗扰控制(ADRC)与智能控制方法(如模糊逻辑、神经网络)的融合,旨在突破传统ADRC在非线性、时变系统中的应用局限。智能融合ADRC主要通过以下方式实现性能提升: 模糊ADRC 参数自整定:利用模糊推理在线调节ADRC带宽参数,实现自适应控制。 非线性反馈:用模糊控制器替代线性PD,灵活设计非线性控制策略。 优势:融入专家经验,无需精确模型;局限:依赖规则库设计,稳定性分析困难。 神经网络ADRC 增强ESO:用神经网络学习扰动动态,提高估计精度。

技术工作者 226

cookie与jwt解析

session 会在一定时间内保存在服务器上。访问增多会占用服务器的性能,若要减轻服务器性能问题,应使用 cookie。单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。对于浏览器外的其他客户端(比如iOS、Android),必须手动的设置cookie和session;),并且是以key:value的形式进行表示的。cookie 数据存放在客户端浏览器上,session 数据放在服务器上。cookie 不是很安全,是明文传递的,所以存在安全性的问题;

web$-小白 985

【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程

在众多游戏的主界面、商城、图鉴或关卡选择界面中,我们常常能看到轮播图的身影。 它以动态、直观的方式展示游戏角色、皮肤、成就或场景,不仅极大地提升了界面的美观度和交互性,还能高效地引导玩家聚焦于核心内容。 本篇文章将从零开始,一步步在Unity中构建一个功能完备、性能优良的游戏轮播图。 使用UGUI系统,通过代码驱动,实现包括自动轮播、手动拖拽、分页指示器、无限循环等核心功能。 无论是UI新手还是希望优化现有方案的开发者,这篇文章都将为你提供清晰的思路和完整的解决方案。

努力前行,总会成为自己心中的那道光 4万+

cookie、session、token、JWT

cookie、session、token、JWT

lza20001103的博客 1243

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

session、cookie、jwt

session、cookie、jwt的区别

bojinyuan00的博客 1186

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

清晰讲解Cookie、Session、Token、JWT之间的区别

详细介绍Cookie, Session, Token, JWT的知识和应用

记录分享编程与冲浪知识 1604

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Session、Cookie、Token(JWT)】

自包含:指的是jwt令牌,看似是一个随机的字符串,但是我们是可以根据自身的需求在jwt令牌中存储自定义的数据内容。用户登录成功后,系统会自动下发JWT令牌,然后在后续的每次请求中,都需要在请求头header中携带到服务端,请求头的名称为 token ,值为 登录时下发的JWT令牌。运行测试方法,输出的结果就是生成的JWT令牌,,通过英文的点分割对三个部分进行分割,我们可以将生成的令牌复制一下,然后打开JWT的官网,将生成的令牌直接放在Encoded位置,此时就会自动的将令牌解析出来。

m0_72168982的博客 1486

Cookie、Session、Token、JWT

主要对Cookie、Session、Token、JWT做了简单介绍,并且对JWT在Gin框架中的使用以一个demo的形式进行了演示。

qq_47997583的博客 1262

一文搞懂Cookie、Session、Token、JWT

Cookie和Session是传统的基于服务器的会话管理机制,而Token和JWT则是更为灵活和安全的身份验证和授权机制,适用于分布式系统和前后端分离的应用场景。JWT是Token的一种实现方式,具有更高的可移植性和可扩展性。选择合适的技术可以有效地保护系统稳定运行并提高用户体验。

2401_85373732的博客 1151

授权认证登录之 Cookie、Session、Token、JWT详解

授权认证登录之 Cookie、Session、Token、JWT 详解

qq_20236937的博客 2721

Cookie、Session、JWT

Cookie、Session和JWT是Web开发中用于用户身份验证和会话管理的三种主要技术。Cookie是由服务器发送到客户端并存储在浏览器中的小型文本文件,适用于存储用户偏好和简单会话管理,但安全性较低。Session则是服务器端存储用户会话信息的机制,安全性较高,适合传统Web应用,但存在SessionID泄露的风险。JWT是一种以JSON对象形式在客户端和服务器间安全传输信息的开放标准,适用于分布式系统和前后端分离架构,通过签名机制保证数据安全,但密钥泄露会威胁其安全性。每种技术都有其特定的应用场景和

Very_a的博客 1007

Cookie、session、token、JWT

通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功)用户名密码登录邮箱发送登录链接手机号接收验证码只要你能收到邮箱/验证码,就默认你是账号的主人用户授予第三方应用访问该用户某些资源的权限,你在安装手机应用的时候,APP 会询问是否允许授予权限(访问相册、地理位置等权限)你在访问微信小程序时,当登录时,小程序会询问是否允许授予权限(获取昵称、头像、地区、性别等个人信息)

dgsfdsdf的博客 1822

一篇文章让你分清Cookie、Session、Token和JWT

通俗来讲就是用来验证当前用户的身份,例如我们看电影就得需要刷电影票入场、进车站需要刷身份证,电影票和身份证就是认证授权在我们生活中无处不在,当我们登录一个软件的时候,会询问是否允许授予地理位置、相机、麦克风等权限。实现授权的方式:Cookie、Session、Token、OAuth。

m0_74346394的博客 914

cookie session 与 JWT

签名的目的就是为了防jwt令牌被篡改,而正是因为jwt令牌最后一个部分数字签名的存在,所以整个jwt 令牌是非常安全可靠的。一旦jwt令牌当中任何一个部分、任何一个字符被篡改了,整个令牌在校验的时候都会失败,所以它是非常安全可靠的。PS:Session 底层是基于Cookie实现的会话跟踪,如果Cookie不可用,则该方案,也就失效了。JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)稍后我们再来学习如何来生成jwt令牌,以及如何来校验jwt令牌。

世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。 912

Cookie、Session、Token、JWT 详解与对比

本文详细介绍了四种常见的Web认证机制:Cookie、Session、Token和JWT。Cookie是存储在客户端的小型数据,Session则是服务器端维护的用户状态。Token提供无状态认证,而JWT作为Token的一种实现,采用JSON格式自包含用户信息。文章比较了四者在存储位置、状态管理、安全性、跨域支持等方面的差异,并解答了相关面试问题,包括工作原理、安全风险及防护措施等。JWT的无状态特性使其特别适合分布式系统,但需注意Token防篡改和过期控制。

weixin_39956506的博客 1602

Jwt,Token,Cookie,Session之间的区别

认证是关于验证你的凭据,如用户名/邮箱和密码,以验证访问者的身份。系统确定你是否就是你所说的使用凭据。在公共和专用网络中,系统通过登录密码验证用户身份。身份认证通常通过用户名和密码完成,有时与认证可以不仅仅通过密码的形式,也可以通过手机验证码或者生物特征等其他因素。在某些应用系统中,为了追求更高的安全性,往往会要求多种认证因素叠加使用,这就是我们经常说的多因素认证。通俗地讲就是验证当前用户的身份,证明你是你自己。

分享思想,留下痕迹。 1万+
上一篇: Java高阶笔记
下一篇: HashMap超详解
Tate_Brown
博客等级 码龄9年 39粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值