JWT令牌创建后(加密和签名后),您能修改它的头吗



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

场景:

  1. 解码标头
  2. 更改标头中某个参数的值,例如kid参数
  3. 对修改后的标头进行编码
  4. 将JWT令牌中的初始编码标头替换为新的编码标头

问题

  • 令牌是否仍然有效
  • 或者,当最初对其进行签名时,在创建签名时也会考虑标头,因此,如果之后修改标头,则令牌被视为无效

对于签名令牌(JWS(,签名是使用有效载荷和标头计算的。如果更改了标头或有效负载,则签名部分将变为无效。

你可以试试https://jwt.io/

请注意,存在一种已知的攻击,包括将签名算法修改为none,以及签名本身允许在没有警告易受攻击库的情况下修改有效负载。有关详细信息,请参阅本文。

是。如果要从现有令牌进行修改,可以尝试此网站:https://token.dev/

除非拥有密钥,否则无法更改标头/有效负载。如果他/她拥有密钥,他们可以更改JWT令牌。

例如,如果使用nestjs注册JwtModule,则必须从配置文件中读取密钥,以避免泄露密钥。如下

JwtModule.register({
secret: 'read this from config file',
signOptions: {
expiresIn: 60 * 1000
}
}),

有关更多信息,您可以观看此视频

最新更新