【问题标题】:How to make small password reset token in asp.net web api?如何在asp.net web api中制作小密码重置令牌?
【发布时间】:2019-10-03 19:18:26
【问题描述】:

我使用默认的 GeneratePasswordResetToken 方法在用户的电子邮件中发送密码重置令牌,但它非常大,有 200 到 300 个字符长。我想制作更小的令牌,如 5/6 位长,并在 3 分钟内过期。我该怎么做?

【问题讨论】:

  • 有什么特别的原因吗?大概您将其作为链接的一部分发送,因此用户不需要键入它,对吗?另外,3 分钟似乎很短——如果他们的电子邮件客户端只同步 15 分钟呢?
  • 是的,3 分钟可能太短,以至于电子邮件甚至无法到达客户端的 SMTP 服务器。
  • 是的。我不想通过链接发送它。因为我有角度作为我的前端。用户必须复制令牌并将其粘贴到另一个表单中。
  • 有什么意义?这不是一种确认。它不使用不同的频道,这就是重点。
  • into user's email. 这不是您在 cmets 中要求的。您要求将某些内容发送到浏览器。当前令牌没有有问题,实际上链接应该保持原样 - 该令牌是唯一的、加密和签名的,以确保它不会被劫持并且不能重播

标签: c# asp.net-web-api asp.net-identity websecurity


【解决方案1】:

一种方法是这样的:

在您的数据库中有一个表,您可以在其中保存重置令牌及其创建日期时间。

当用户请求重置时,生成一个 GUID 并将其保存在该表中,然后向用户发送包含重置链接的电子邮件,其中包含已包含令牌的链接。

当用户单击链接时,您检查令牌是否尚未过期,如果尚未过期,则允许他们更改密码。

更改密码后,要么将令牌标记为已使用,要么直接将其从表中删除。

GUID 非常适合这种功能,它们足够独特且无法猜测。

不要使用任何连续的或短的(5、6 个字符),因为它们很容易猜测/蛮力。

【讨论】:

  • 我也是这么想的。
猜你喜欢
  • 2016-06-17
  • 2017-11-27
  • 2017-06-02
  • 2020-02-29
  • 2018-06-01
  • 1970-01-01
  • 2016-05-03
  • 2015-04-28
  • 2021-12-17
相关资源
最近更新 更多