JWT令牌

0x01 简介

Josn web token是一种跨域验证身份的方案。


0x02 JWT的组成

头部(header)
{
"alg":"HS256" //alg声明这个JWT签名使用的加密算法。
"typ":"JWT" //typ声明token的类型。
}

声明(claims)

{
可自定义如"user":"Asson"等value,也可使用默认的value,
特别注意iat和exp字段,需要针对性的进行修改以免令牌时间过期
}

签名(signature)
签名为自定义key

头部信息和声明以BASE64URL编码,签名使用alg声明的加密类型将base64url编码后的头部.声明+签名进行加密。最终将这三部分密文中间以.隔开,形成了数据包格式为xxxx.xxxxxxx.xxxxx的JWT。


0x03 工作过程

  1. 用户在用户端进行登录操作,此时请求包中会将用户名和密码发送给服务器
  2. 服务器对用户名和密码进行校验,校验通过后生成json头部和声明,将相关的用户信息写入声明中,并用指定算法将KEY加密,从而生成JWT,此时服务器并没有保存用户的登录状态信息
  3. 服务器通过响应包将JWT返回给用户端
  4. 用户端再次与服务器进行会话时,用户端会将JWT写在HTTP请求头的authorization字段
  5. 服务器对JWT进行验证,若验证成功,则确认用户的登录状态,并返回响应包

0x04 利用方式

  1. 伪造
  • 无秘钥
    • 修改alg为none,删除签名,此时数据包为xxx.xxxx.
  • 有秘钥
    • 对应修改数据后重新加密
  1. 爆破
  • 针对签名密匙进行爆破
  1. 配合
  • JWT数据中存在参数传递接受处理过程

0x05 如何识别JWT

  1. javaweb
  2. authorization字段
  3. 数据包数据格式

本文仅为个人学习时所作笔记,文中如有错误,烦请各位师傅批评指正,助我进步。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容