以邮寄重置用户密码的正常流程是这样的:密码,不需要数据库表通过电子邮件重置
- 生成一个随机字符串,它
- 电子邮件字符串存储在数据库中的表用户
- 用户单击包含字符串的链接
- 字符串针对数据库进行了验证;如果匹配,用户的密码被重置
但是,维护一个表和过期的旧字符串等似乎有点不必要的麻烦。这种替代方法有没有明显的缺陷?
- 生成用户现有密码的MD5哈希
- 电子邮件哈希字符串用户对包含字符串
- 字符串link
- 用户点击由现有的PW再次验证散列;如果匹配,用户的密码被重置
请注意,用户的密码已存储在哈希和盐渍的形式,我只是再次哈希它得到一个唯一但可重复的字符串。
是的,有一个明显的“缺陷”:因此生成的重置链接将不会过期,直到用户更改其密码(单击链接)。我真的不明白为什么这会是一个问题 - 但如果邮箱遭到破坏,用户仍然会受到干扰。而且没有重用的风险,因为一旦用户的密码被更改,重置链接将不再匹配。
+1的有趣想法 – 2010-05-03 03:04:40