安全矩阵

 找回密码
 立即注册
搜索
查看: 2719|回复: 0

基础14-JWT简述

[复制链接]

252

主题

252

帖子

1309

积分

金牌会员

Rank: 6Rank: 6

积分
1309
发表于 2022-1-11 14:59:15 | 显示全部楼层 |阅读模式
原文链接:基础14-JWT简述

目录

1.何为JWT2.JWT的组成2.1 header部分2.1 claims部分(也叫payload)2.3 Signature(签名部分)3.JWT漏洞点及攻击方向3.1Header方面3.2 Payload方面3.3 Signature方面3.4 其他方面4.JWT认证流程图

1、何为JWT
JWT(JSON Web Token),它是一串带有声明信息的字符串,由服务端使用加密算法对信息签名,以保证其完整性和不可伪造性。Token里可以包含所有必要的信息,这样服务端就无需保存任何关于用户或会话的信息了。JWT可用于身份认证,会话状态维持以及信息交换等任务。
在互联网领域中,JWT适用领域非常普遍,其主要使用场景有:

2、JWT的组成
JWT由三部分组成,header.claims.signature
Header: 存放Token类型和加密的方法
Payload: 包含一些用户身份信息.
Signature: 签名是将前面的Header,Payload信息以及一个密钥组合起来并使用Header中的算法进行加密
2.1 header部分格式如下:


在头部指明了签名算法是HS256算法。
当然头部也要进行BASE64编码,编码后的字符串如下:

2.1 claims部分(也叫payload)这里主要是存放有效信息,这些信息按照职能可以分成三个部分。标准的注册声明,公共的声明,私有的声明。
这里我们主要了解一些我们常见的数据信息


将上面的JSON对象进行base64编码可以得到紫色的字符串。这个字符串我们将它称作JWT的Payload(载荷)。
2.3 Signature(签名部分)服务器有一个不会发送给客户端的密钥(secret)。
首先这个部分需要BASE64加密后的header和payload,然后使用进行连接组成的字符串,然后通过header中指定的加密方式,进行加盐值secret组合加密,然后就构成了JWT的第三部分。
所以一个完整的JWT数据就是这样的,如下图

3、JWT漏洞点及攻击方向
3.1Header方面
是否支持修改算法为none/对称加密算法
是否可以删除签名
插入错误信息
kid字段是否有SQL注入/命令注入/目录遍历
jwt元素是否可信
是否强制使用白名单上的加密算法
3.2 Payload方面
其中是否存在敏感信息检查过期策略,比如 exp, iat
3.3 Signature方面
检查是否强制检查签名
密钥是否可以爆破(如HMAC)
是否可以通过其他方式拿到密钥
采用了自身存在脆弱性的算法(如ECDH-ES)
签名方法之间是否存在冲突
3.4 其他方面
重放
通过匹配校验的时间做时间攻击
修改算法非对称算法为对称算法(如修改RS256为HS256)【CVE-2015-9235】
不安全的配置所导致的敏感信息泄露(如在报错信息中泄露签名)
好文推荐:攻击JWT的一些方法 - 先知社区 (aliyun.com)https://xz.aliyun.com/t/6776#toc-8

4、JWT认证流程图

1、用户端登录,用户名和密码在请求中被发往服务器
2、(确认登录信息正确后)服务器生成 JSON 头部和声明,将登录信息写入 JSON 的声明中(通常不
应写入密码,因为 JWT 是不加密的),并用 secret 用指定算法进行加密,生成该用户的 JWT。此时,
服务器并没有保存登录状态信息。
3、服务器将 JWT(通过响应)返回给客户端
4、用户下次会话时,客户端会自动将 JWT 写在 HTTP 请求头部的 Authorization 字段中
5、服务器对 JWT 进行验证,若验证成功,则确认此用户的登录状态
6、服务器返回响应



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-23 16:04 , Processed in 0.014033 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表