JWT基础原理

JWT基础原理以及安全问题

https://www.cnblogs.com/wang-meng/p/11452620.html

https://www.jianshu.com/p/3dfb665b0249

JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换

使用起来就是,由服务端根据规范生成一个令牌(token),并且发放给客户端。此时客户端请求服务端的时候就可以携带者令牌,以令牌来证明自己的身份信息。

作用:类似session保持登录状态 的办法,通过token来代表用户身份。

一个JWT是一个字符串,由三部分组成:头部、载荷与签名( Header.Payload.Signature ),存在过期时间, 默认不加密

Header:一个 JSON 对象,描述 JWT 的元数据, alg属性表示签名的算法 (algorithm),默认是 HMAC SHA256(写成 HS256); typ属性表示这个令牌(token)的类型(type),JWT 令牌统一写为JWT。 用 Base64URL 算法转成字符串。

Payload:一个 JSON 对象,用来存放实际需要传递的数据。JWT 规定了7个官方字段(iss (issuer):签发人、exp (expiration time):过期时间sub (subject):主题aud (audience):受众nbf (Not Before):生效时间、iat (Issued At):签发时间、jti (JWT ID):编号),可以选用以及定义其他私有字段。 用 Base64URL 算法转成字符串。

Signature 部分是对前两部分的签名,防止数据篡改。

在这里插入图片描述

1.由于服务器不保存 session 状态,因此无法在使用过程中废止某个 token,或者更改 token 的权限。也就是说,一旦 JWT 签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。

2.JWT 本身包含了认证信息,一旦泄露,任何人都可以获得该令牌的所有权限。为了减少盗用,JWT 的有效期应该设置得比较短。对于一些比较重要的权限,使用时应该再次对用户进行认证。

如果其他用户获得token,那么他们就能模仿真实用户进行操作

https://www.cnblogs.com/r00tuser/p/12513046.html

如何攻击JWT

1,敏感信息泄露

因为有效载荷是明文传输的,如果有效载荷存在敏感信息的话就会发生信息泄露

2,将签名算法改为none

使用工具: JWTPyCrack

python jwtcrack.py -m generate -s {\"admin\":\"True\"}

3,未校验签名

直接替换数据,使用https://jwt.io/#debugger

插入一些常见测试payload,如注入,xss等

4,爆破弱key

使用工具:JWTPyCrack ,只支持明文,有些时候可能还要考虑base64encode的情况,base64的情况,要自己编写脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值