JWT安全分析

JWT全称 json web token 。是为了在应用环境间传递声明而执行的一种基于 JSON 的开放标准。 JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息, 以便于从资源服务器获取资源。

JWT由三部分构成:

头部:

头部分为两个字段,其中以个字段用来声明类型,字段值为jwt

第二个字段为声明签名的加密算法。

例如:

{"alg":"HS256","typ":"JWT"}

数据:

用来承载传输的数据内容,例如:

{ " name " : " baobao " , " sex " : " boy " }

签名:

这一部分为数据签名验证信息,用于保证数据的完整性和可信任性。

这三部分通过base64进行编码后使用"."进行衔接。

例如:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiYmFvYmFvIiwic2V4IjoiYm95IiwiaXNMb2dpbiI6dHJ1ZX0=.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

JWT的安全问题:

1. 信息泄露

由于JWT的数据段部分是采用的base64编码传输所以很容易被转换成明文数据,造成数据泄露的问题。

2. 签名算法可修改为 none

由于头部字段中的alg字段用来声明签名的加密算法,所以如果这里修改为none则表明无签名字段,可以直接删除末尾的签名内容任意修改数据段的值。

3. 签名未效验

有些服务端未对签名字段进行效验,所以可以尝试直接删除签名字段信息来查看数据验证是否成功。

4. 数据签名可爆破

JWT通过效验 jwt 签名信息来保证数据的安全性,所以如果爆破出签名的加密秘钥我们就可以任意修改 jwt 的数据。

附上一个爆破工具。

https://github.com/Ch1ngg/JWTPyCrack

5. 修改非对称加密算法为加密对称算法

JWT的签名加密算法有两种,对称加密算法和非对称加密算法。对称加密算法比如 HS256 ,加解密使用同一个密钥,保存在服务端。非对称加密算法比如RS256,后端加密使用私钥,前端解密使用公钥。

如果我们修改alg字段,将算法从 RS256 更改为 HS256 ,服务端会使用 RS256 的公钥作为 HS256 算法的密钥。于是我们就可以用 RS256 的公钥伪造数据。

相关推荐
FfHUCisI9 小时前
Golang - 信号量模式(Semaphore Pattern)
开发语言·后端·golang
无锡耐特森9 小时前
Profinet转ModbusTCP协议网关:数字化工厂跨协议互联
网络
m0_547486669 小时前
《Java程序设计与实践 》全套PPT课件2026
java·开发语言
智脑API9 小时前
CCSwitch Claude Code 国内怎么接入?Windows、VS Code 配置与安全使用教程
安全·vs code·ccswitch
MartinYeung59 小时前
[论文学习]ProAct:针对LLM越狱的主动防禦框架
网络·学习·安全
云水一下9 小时前
零基础玩转bWAPP靶场(五十八):XSS - Stored (User-Agent)
web安全·xss·bwapp·user-agent·stored
发量惊人的中年网工10 小时前
中小企业网络管理进阶:从设备堆叠到统一管理
服务器·网络·安全·网络安全·php·制造
workflower10 小时前
案例 :某交通厅基于AI技术的智能安全运营实践
网络·人工智能·安全·设计模式·机器人
灵析表格10 小时前
灵析表格财务函数深度实用性分析与实操教程
开发语言·ai·json·excel·wps
SendTomo10 小时前
WebRTC文件互传工具实测对比
javascript·网络·webrtc·html5·p2p