gpt4 book ai didi

base64 - 为什么 JWT 签名对于特定负载来说不是唯一的

转载 作者:行者123 更新时间:2023-12-03 09:15:07 24 4
gpt4 key购买 nike

我的应用程序正在使用 JWT,应该可以防止重放攻击。我正在对此进行测试并遇到以下情况。

当我拥有有效的 JWT 并更改 token /签名的最后一个字符时,JWT 仍然有效。例如。以下 token 均已正确验证: 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,则二进制值会发生变化,签名验证将失败

Can two different BASE 64 encoded strings result into same string if decoded?

关于base64 - 为什么 JWT 签名对于特定负载来说不是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38508522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com