我在网站上有用户,他们的密码是加密的(md5)并存储在数据库中。现在,我收到了他们的电子邮件,如果有人忘记了密码,我想给他发送链接以重置密码。
任何人都可以建议如何做到这一点?哪些是最佳做法?
的问候,卓然
答案 0 :(得分:2)
您应该使用mail()
发送电子邮件,并在数据库中添加哈希随机字符串。电子邮件应包含“domain.com/forgot.php?h=HASHEDSTRING”之类的链接。在该页面中,您应该检查哪个用户具有该哈希字符串,并为其输出一个字段以重置其密码。
答案 1 :(得分:1)
在数据库中弹出一个相当独特的列,它是一个随机生成的令牌字符串(很长)。当用户请求重置密码时,请将该令牌发送到电子邮件中以进行验证。通过链接(又名GET)返回该令牌将确认用户可以访问该电子邮件地址,并在此时允许他们重置其密码。
答案 2 :(得分:1)
处理密码重置的安全方法可能如下所示:
密码重置请求:
密码重置:
您可以使用SHA512之类的哈希算法对令牌进行哈希处理,而不使用盐。如果令牌非常强大(最小长度为20,0-9 a-z A-Z),这是安全的。从理论上讲,你必须先检查这种哈希是否已经存在,然后才能在数据库中输入,实际上这可以忽略不计。
答案 3 :(得分:0)
您可以执行以下操作,
如果用户忘记了密码,则允许他输入已注册的电子邮件。
发送包含重置密码链接的电子邮件,该链接应包含md5(部分数据) 例如:www.ex.com/md5_data
在发送邮件之前,输入的支票邮件是存在的,如果存在,则使用用户ID,存储用户ID,md5(数据)以及邮件发送
当用户点击发送给邮件的链接时,获取url数据并检查表中是否存在md5数据,如果存在则获取用户ID并允许他设置新密码并使用用户ID更新密码并删除来自表格的md5数据,如果他再次点击链接则不应该有效。