为什么JWT签名对于特定有效负载不是唯一的

雷米·勃洛克(Remy Blok)

我的应用程序正在使用JWT,并且应防止重放攻击。我正在对此进行测试,然后遇到了以下问题。

当我拥有有效的JWT并更改令牌/签名的最后一个字符时,JWT仍然有效。例如,以下令牌都可以正确验证:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJTb21lIFRlc3QiLCJjbGFpbSI6IlNvbWUgQ2xhaW0ifQ.UkFYSK7hSSeiqUOSMdbXgbOErMFnuK0Emk1722ny-r4 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJTb21lIFRlc3QiLCJjbGFpbSI6IlNvbWUgQ2xhaW0ifQ.UkFYSK7hSSeiqUOSMdbXgbOErMFnuK0Emk1722ny-r5 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJTb21lIFRlc3QiLCJjbGFpbSI6IlNvbWUgQ2xhaW0ifQ.UkFYSK7hSSeiqUOSMdbXgbOErMFnuK0Emk1722ny-r6 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJTb21lIFRlc3QiLCJjbGFpbSI6IlNvbWUgQ2xhaW0ifQ.UkFYSK7hSSeiqUOSMdbXgbOErMFnuK0Emk1722ny-r7

我已经在http://jwt.io/上进行了检查,并且也可以在我的.Net应用程序中进行复制。

有人可以解释一下签名对于给定的有效负载而言可能不是唯一的吗?我知道可能会发生冲突,但是我无法解释它们是连续的序列。

佩德罗夫

在这种特殊情况下,您将更改签名的base64 url​​编码,而不是签名本身

第四个base64值编码相同的二进制值。尝试在http://kjur.github.io/jsjws/tool_b64udec.html转换为十六进制

您将看到的价值是

52415848aee14927a2a9439231d6d781b384acc167b8ad049a4d7bdb69f2fabe

如果将后缀更改为-r1或,-r8则二进制值更改,并且签名验证将失败

如果解码,是否可以将两个不同的BASE 64编码字符串转换为同一字符串?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么JWT签名对于特定有效负载不是唯一的

来自分类Dev

Android JWT在签名时解析有效负载/声明

来自分类Dev

为什么为了方便起见,JWT有效负载中没有公钥

来自分类Dev

为什么为了方便起见,JWT有效负载中没有公钥

来自分类Dev

为什么 JWT 颁发者签名密钥验证总是返回有效?

来自分类Dev

我们需要馈送给批处理执行的任何特定有效负载吗?

来自分类Dev

为什么路径填充的数据绑定有效,但其子元素的任何绑定却无效?

来自分类Dev

以下两个呼叫中的哪个肯定有效,为什么?

来自分类Dev

未找到与有效负载的预期签名匹配的签名

来自分类Dev

为什么在指定特定的文件扩展名而不是“或”时“和”有效?

来自分类Dev

这似乎不是一个有效的功能。为什么?

来自分类Dev

为什么不是有效的重复目标?

来自分类Dev

为什么不是有效的重复目标?

来自分类Dev

为什么扩展键T不是有效索引

来自分类Dev

为什么不是有效的重复目标?

来自分类Dev

为什么“ INTERVAL”在IF语句中不是有效的语法

来自分类Dev

为什么这不是有效的回调

来自分类Dev

JWT有效负载中应包含多少信息?

来自分类Dev

向DRF简单JWT有效负载添加声明

来自分类Dev

restframework-jwt 如何处理有效负载?

来自分类Dev

TagHelper指定有效属性

来自分类Dev

为什么我的protobuf反序列化提供了空的有效负载?

来自分类Dev

Heartbleed错误:为什么在交付有效负载之前甚至可以处理心跳请求?

来自分类Dev

为什么视频有效负载的 RTP 时间戳使用 90 kHz 时钟速率?

来自分类Dev

从 mmap-ed 存储器的有效读取在负载下产生 SIGBUS。为什么?

来自分类Dev

为什么在提供数据有效负载时未收到 WM_COPYDATA 消息?

来自分类Dev

jQuery ajax返回$ _POST而不是REQUEST有效负载

来自分类Dev

为什么这是一个有效的比较

来自分类Dev

Swift:为什么'subscript(var digitIndex:Int)-> Int'是有效的函数签名?

Related 相关文章

  1. 1

    为什么JWT签名对于特定有效负载不是唯一的

  2. 2

    Android JWT在签名时解析有效负载/声明

  3. 3

    为什么为了方便起见,JWT有效负载中没有公钥

  4. 4

    为什么为了方便起见,JWT有效负载中没有公钥

  5. 5

    为什么 JWT 颁发者签名密钥验证总是返回有效?

  6. 6

    我们需要馈送给批处理执行的任何特定有效负载吗?

  7. 7

    为什么路径填充的数据绑定有效,但其子元素的任何绑定却无效?

  8. 8

    以下两个呼叫中的哪个肯定有效,为什么?

  9. 9

    未找到与有效负载的预期签名匹配的签名

  10. 10

    为什么在指定特定的文件扩展名而不是“或”时“和”有效?

  11. 11

    这似乎不是一个有效的功能。为什么?

  12. 12

    为什么不是有效的重复目标?

  13. 13

    为什么不是有效的重复目标?

  14. 14

    为什么扩展键T不是有效索引

  15. 15

    为什么不是有效的重复目标?

  16. 16

    为什么“ INTERVAL”在IF语句中不是有效的语法

  17. 17

    为什么这不是有效的回调

  18. 18

    JWT有效负载中应包含多少信息?

  19. 19

    向DRF简单JWT有效负载添加声明

  20. 20

    restframework-jwt 如何处理有效负载?

  21. 21

    TagHelper指定有效属性

  22. 22

    为什么我的protobuf反序列化提供了空的有效负载?

  23. 23

    Heartbleed错误:为什么在交付有效负载之前甚至可以处理心跳请求?

  24. 24

    为什么视频有效负载的 RTP 时间戳使用 90 kHz 时钟速率?

  25. 25

    从 mmap-ed 存储器的有效读取在负载下产生 SIGBUS。为什么?

  26. 26

    为什么在提供数据有效负载时未收到 WM_COPYDATA 消息?

  27. 27

    jQuery ajax返回$ _POST而不是REQUEST有效负载

  28. 28

    为什么这是一个有效的比较

  29. 29

    Swift:为什么'subscript(var digitIndex:Int)-> Int'是有效的函数签名?

热门标签

归档