您可以在创建 JWT 令牌后(加密和签名后)修改其标头吗?

Cri*_*cot 2 authentication jwt

我知道 JWT 令牌包含一个 BASE64 编码的标头部分。

设想:

  1. 解码头部
  2. 更改标头中存在的参数之一的值,例如kid参数
  3. 编码修改后的标头
  4. 用 JWT 令牌中的新编码头替换初始编码头

问题

  • 令牌仍然有效吗?
  • 或者在最初签名时,创建签名时也会考虑标头,因此如果之后修改标头,则认为令牌无效?

Flo*_*lli 5

对于签名令牌 (JWS),使用有效负载和标头计算签名。如果您更改标头或有效负载,则签名部分将无效。

你可以在https://jwt.io/尝试一下

请注意,有一种已知的攻击包括修改签名算法none和签名本身,允许在不警告易受攻击的库的情况下修改有效负载。有关更多信息,请参阅这篇详细的文章