security - 每次重置密码链接时是否都有不同?

  显示原文与译文双语对照的内容

我现在所采取的方法是:

  • 接受 PasswordSalt
  • 用SHA1和一些应用级别salt再次散列
  • 然后生成重置密码链接,从

优点是它非常简单,而且我不需要创建任何新的数据库列。

缺点是,这个链接对于用户来说是一样的。

这是安全问题?

时间: 作者:

为了避免额外的数据库列并为你提供简单性,这似乎是一。

应该安全地生成用于链接的令牌和在数据库中存储的令牌。 这有利于每次都能随机生成和到期数据可以与令牌相关联。

这将使风险最小化,因为重置链路有限的生命周期,并且降低了错误手的机会。

我不同意所有( 在的@Marcus 回答中。) 使用的安全问题,因为这些问题通常是很容易猜出的,如果攻击者知道受害者。 此外,它们的缺点是不能很容易地更新( 比如 。 如果你买一个新的,更好的宠物,你最喜欢的NAME 会保持一样。

作者:

假设你正在发送密码重置链接,用户必须输入用户名/电子邮件地址才能启动进程。

确保每次用户重置密码时都生成一个新的随机盐,以便不能进行任何重播攻击。

例如,如果盐不改变,密码重置链接将不会改变,即使在密码重置后。 如果一个黑客能够获得链接,即使一年后,黑客也可以将密码重置为他们想要的。

在单击密码重置链接后,通常会要求用户回答以前设置的安全问题。 这有助于减轻黑客获取和使用链接的问题。

事实上,即使是请求密码,也可能需要密码 salt,但因为这样做需要密码 salt,秘密应用程序级别 salt ( 真的,钥匙,因为它不是随机的),但这样做可能需要密码 reset 。

为了验证密码重置链接,你必须扫描用户表中的所有行,直到找到匹配的行。

作者:
...