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
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的签发时间
...