首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >密码重置链接:随机值还是认证消息?

密码重置链接:随机值还是认证消息?
EN

Security用户
提问于 2013-02-22 22:31:01
回答 5查看 11.1K关注 0票数 10

哪种更好些呢?

  1. 创建防篡改加密密码重置令牌,其中包含用户id和加密令牌内的过期时间。
  2. 生成一个随机令牌,并使用用户id和过期日期将其存储在数据库中。当用户单击链接时查找令牌。

我可以看到#2的一个优点是,您可以控制这些令牌。如果你想早点过期,你可以。我发现#1的一个困难是确保您发送的令牌确实是安全的和防篡改的。你完全依赖于不搞砸密码学。

ASP.NET 2.0是否有生成密码重置令牌的内置方法?

EN

回答 5

Security用户

回答已采纳

发布于 2013-02-22 23:28:43

创建一个完全不包含任何信息的随机令牌,并将其以用户名和过期时间链接到数据库中是目前为止最好的解决方案。

加密(和散列)用于存储和传输绝对必须发送的数据。如果有任何方法不需要发送加密或非加密的数据,就可以提供相同的功能和安全性,那么您应该使用该方法。换句话说,加密应该是保护数据的最后手段。

票数 14
EN

Security用户

发布于 2013-02-23 08:35:20

这些令牌是密码等价物,因此必须满足类似的要求。但到目前为止,最大的问题是它不能被对手武断地猜测。因此,它不应与随机数据区分开来。

在对任何数据进行编码时,显然需要对其进行加密。现在,这可能涉及到您自己的某种程度的滚动,或者至少自己将密码原语组合在一起,这可能会出错(参见:别当戴夫)。

因此,这意味着您最安全和最简单的解决方案是创建一个非常随机的令牌,并将其存储在数据库中,并为该令牌存储一个id。加入id和令牌,并将其序列化为十六进制或Base32,并将其发送给用户。当令牌返回时,使用id从数据库获取令牌/salt,并对其余令牌进行散列,以查看其是否匹配。

你必须确保一些额外的东西关于令牌,因为他们将在人们的电子邮件。

  • 确保他们有足够高的熵来抵抗猜测
  • 它们必须足够短,才能轻松地编码到URL中
  • 它们必须在一段相当短的时间内过期,因为它们将出现在人们的电子邮件收件箱中
  • 他们必须只使用一次
票数 4
EN

Security用户

发布于 2013-02-22 22:56:04

您可以将过期时间编码为令牌并使用HMAC,但是密码重置通常涉及访问特定的URL。通常,为了使用户更容易,其中一个包括在URL中的令牌作为一个GET字段。

为了保持URL相对较小,并且仅由可打印字符组成,您可能会将时间戳编码为整数,并使用固定宽度设置。这必须指定用户、到期日期和MAC。我认为它是可靠的,但它不是没有某种编码的努力。

因为您无论如何都需要访问一个密码的数据库,并且不需要考虑编码一个随机的固定宽度值,所以我只想这么做。在其他条件相同的情况下(我认为这是相当平等的),容易获胜。额外奖励:较低的CPU使用率。

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

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

复制
相关文章

相似问题

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