首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JTI如何防止JWT被重放?

JTI如何防止JWT被重放?
EN

Security用户
提问于 2016-05-30 18:34:05
回答 3查看 39.7K关注 0票数 40

根据JWT,JWT可以有一个JTI,我将其解释为JWT的唯一ID。对于JTI来说,UUID似乎是一个很好的价值。RFC声称JTI可以用来防止JWT被重放。两个问题:

  • JTI如何防止JWT被重放?
  • JTI字段应该多久再生一次?每一次请求?还是只在新令牌生成时?

"jti“(JWT ID)声明为JWT提供了唯一的标识符。标识符值的分配方式必须确保that有一个可忽略的概率,即相同的值会意外地分配给不同的数据对象;如果application使用多个发出者,则还必须防止不同发行者产生的values之间的冲突。"jti“声明可以是used,以防止JWT被重放。"jti“值是一个case-敏感字符串。使用此索赔是可选的。

EN

回答 3

Security用户

发布于 2020-05-28 20:34:07

问得好。我觉得RFC的文字有点混乱。

如果JWT在某些API调用中被截获,当然可以一次又一次地使用这个令牌(除非应用程序创建一次使用JWT,但这种类型的标记违背了JWT的目的)。这不是JTIs所保护的“重播攻击”。

密码学上没有"可以只使用一次",所以它只是一个“现在”,也就是说它不应该在两个单独的JWT合成中使用。他们更喜欢TLS证书序列号。

我想说的是,JTIs使对API开发人员做两件事变得更容易:

  • 存储与特定JWT相关的其他信息服务器端:谁请求它,从哪里,使用了多少次,等等。
  • 创建服务器端JWT撤销列表。如果存在识别主动滥用的机制,这肯定会使应用程序更加安全。
票数 7
EN

Security用户

发布于 2016-05-31 11:01:14

  • JTI如何防止JWT被重放?
  • JTI字段应该多久再生一次?每一次请求?还是只在新令牌生成时?

我相信这两个问题的答案将取决于应用程序本身。

例如,如果它已被编程为只接收具有唯一JTI的消息,则应用程序可以忽略相同JTI的重播。

在这种情况下,当JTI对重复相同的消息有效时,将重新生成JTI。

票数 6
EN

Security用户

发布于 2019-06-17 10:43:39

我认为,应用程序应该有某种存储实现,以便将JWT令牌与服务器已经接收到的现有JTI令牌交叉检查。

存储实现可以是一个缓存内存,其中已经使用过的JTI值将被存储。而且,这种验证也有权使用过期时间,因此不需要有更大的存储空间来存储JTI。

保存在缓存中的JTI ID将根据任何新传入的JTI ID进行检查。除非缓存已满,否则存储在缓存中的JTI ID不会被丢弃。

有关更多信息,请参阅下面的链接:https://www.ibm.com/support/knowledgecenter/en/SSEQTP_cwlp/com.ibm.webSpheree.wlp.doc/ae/cwlp_jwttoken.html

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/124624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档