authentication - 您可以在创建 JWT 令牌后(加密和签名后)修改它的标头吗?
问题描述
我知道 JWT 令牌包含一个 BASE64 编码的标头部分。
设想:
- 解码标题
- 更改标题中存在的参数之一的值,例如
kid
参数 - 对修改后的标头进行编码
- 用 JWT 令牌中的新编码标头替换初始编码标头
问题
- 令牌仍然有效吗?
- 还是在最初签名时,在创建签名时也考虑了标头,因此如果之后您修改了标头,则认为令牌无效?
解决方案
对于签名令牌 (JWS),使用有效负载和标头计算签名。如果您更改标头或有效负载,则签名部分将变为无效。
请注意,有一个已知的攻击包括修改签名算法none
和签名本身,允许修改有效负载而不警告易受攻击的库。有关详细信息,请参阅此详细文章。
推荐阅读
- twitter-bootstrap - 如何在 scalajs-bundler 中包含引导程序
- android - SMS Retriever api 在发布和播放商店构建中不起作用
- mysql - 每次我想导入我的数据库时都会发生错误 = SQL 查询错误和#1064
- java - 如何解决“检测到不一致:dl-lookup.c:111”(Java 结果 127)错误?
- php - V2 供稿的 Google 产品供稿标识符
- python - 如何使用正则表达式在 MySQL 日志中获取查询 SELECT
- google-bigquery - 根据 bigquery 中的时间将值拆分为两列
- sql - SQL(postgres)在不同的列中按聚合显示分组,如矩阵
- dc.js - dc.js,防止饼图外部标签重叠
- node.js - Dialogflow API HTTP 请求查询代理不起作用