知识文献

1.JWT介绍

jwt是一种用于身份验证和授权的开放标准,通过网络应用间的传递加密的json。jwt的攻击途径有例如:特权升级、信息泄露、sqli , xss, ssrf,rce, LFI等。

2.基础概念

  • JWS: singed jwt 签名过的jwt
  • JWK: JWT的密钥,常说的的SECRET
  • JWE: encrypted JWT的部分payload经过加密的JWT
  • JKU: jwt的header字段,字段内容是一个url、 该url指定 验证令密钥的服务、该服务器用于回复jwk
  • X5U: x5u是jwt hearder中的一个字段,指向一组x509公共证书的url,jku功能类似
  • x.509标准:x.509标准是密码学里的公钥证书标准格式,包括LTS/SSL在内的

3.基本结构

jwt(json web Token)的基本机构分别是Header, payload和signature。

Header包含了JWT使用的算法和类型等元数据信息,通常使用json对象表示并使用base64进行编码。Header中包含两个字段alg和typ

alg(algorithm)指定了加密算法
typ(type)制定了jwt的类型通常为jwt

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

其中alg指定了使用HMAC-SHA256算法进行签名,typ指定了JWT的类型为JWT

payload

payload 包jwt的主要信息,通常使用json对象并使用base64编码,payload中包含三类型的字段:注册声明、公共声明和私有声明

  • 公共声明 是自定义字段,用于传递非敏感信息, 用户ID 角色
  • 私有声明 是自定义字段 ,传递敏感信息,密码、信用卡号。
  • 注册声明 预定义的标准字段, 发行者,过期时间等
    payload
{
    "sub":"123456789",
    "name":"john Doe",
    "iat":1516239022
}

其中sub表示主题,name表示名称,iat表示JWT的签发时间