【问题标题】:Usage of nbf in json web tokens在 json 网络令牌中使用 nbf
【发布时间】:2017-09-03 15:17:49
【问题描述】:

nbf:定义 JWT 不能被接受处理之前的时间

我在 json 网络令牌中找到了关于 nbf 的定义。但还是想知道nbf 的用途是什么?为什么我们使用这个?是否与安全期限有关?

任何想法都将不胜感激。

【问题讨论】:

  • 用法是发出一个仅在某个时间点后才有效的令牌。假设:您出售一项服务的订阅,而您的客户购买了从 2017-10-10 11:00:00 开始的某些资源的一小时使用权。所以你把对应的nbfexp打上去,你的部分工作就完成了。
  • @pvg 只是避免 jwt 是什么意思?
  • @zerkms 我认为您的示例仅包含exp。例如,当试用开始时,我们有 iat ,然后我们在 iat 之后设置一些时间为 expnbf 在哪里?
  • "并且您的客户购买了从 2017 年 10 月 10 日 11:00:00 开始使用的一小时资源"。 2017 年 10 月 10 日是未来的日期(因为今天是 2017 年 4 月 8 日)。他们对资源的访问从那时开始,持续一个小时。
  • @pvg 没有任何论据的答案是无用的答案。

标签: jwt


【解决方案1】:

这绝对取决于您如何解释时间。

我可以编造的一个可能的场景是字面上的 - 令牌必须从某个特定时间点持续到另一个时间点。

假设您要销售一些 API 或资源。一位客户购买了持续一小时的访问权限,访问权限从明天中午开始。

所以你发出一个 JWT:

  • iat 设置为现在
  • nbf 设置为明天中午 12:00
  • exp 设置为明天下午 1:00

【讨论】:

  • “我可以弥补的可能场景之一”我很想听听其他的。我能想到的唯一目的是发行在发行时无效的代币,而唯一的目的(我能想到的)正是你所说的:如果你卖的是有时间限制的东西,并且您的广告位在未来的某个地方。
【解决方案2】:

可以从创建开始给它 3 秒的时间,以避免机器人并只允许人类用户访问 API。

'nbf' 的意思是'不是之前'。

如果 nbf=3000,则令牌在创建 3 秒之前不能使用。这使得暴力攻击几乎是不可能的。

【讨论】:

  • 这 10 秒的延迟是如何防止机器人的?
  • @AndrzejMartyna 它本身并不能真正阻止任何事情,但设置一个较高的值可以减缓潜在的攻击者试图通过蛮力进入的速度。
  • 对于未来的读者:nbf 应该是 NumericDate,而不是毫秒数。
  • TBH,你的场景有点不切实际。如果攻击者只需要“一个”令牌,那么等待 10 秒就不算什么。请注意,无论nbf 如何,他们都知道自己是否获得了有效令牌。现在,如果他们需要多个令牌,他们可以简单地构建一个包含数千个令牌的 FIFO 队列,只需支付一次“10 秒”延迟税,而不是 10 秒乘以 N 延迟。同样,他们将支付这 10 秒或其他任何费用,只支付一次,无论如何。
  • 这不是一个神奇的验证码,这也不会阻止任何暴力破解。这个答案在当前或任何以前的形式中都是零意义的。
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2021-12-08
  • 2017-07-02
  • 1970-01-01
  • 2023-03-16
  • 2018-11-17
相关资源
最近更新 更多