【发布时间】:2012-10-06 23:31:41
【问题描述】:
如果我向用户的电子邮件地址发送一封电子邮件,其中包含指向密码重置页面的链接,我如何验证该链接?我应该在我的数据库中存储一些随机生成的密钥,然后添加到链接字符串中吗? www.mydomain.com/passwordreset.html?key=abcd1234zz235然后对照数据库中存储的密钥检查这个密钥?
如果这确实是正确的方法,我是否应该创建一些单独的表来存储这些密钥及其对应的电子邮件?如果答案是肯定的,那么我应该在用户重置密码后删除这些密钥以节省数据库空间吗?
提前谢谢你!
【问题讨论】:
-
我在以下任何答案中都没有看到的是,您应该不将访问密钥以纯文本形式存储在数据库中。它应该与用户的实际密码具有完全相同的安全性,因为它本质上是一个密码,这意味着您需要使用安全的散列函数(例如 bcrypt)对其进行散列。然后,您必须将用户 ID 连同访问密钥一起发送给用户,并将 ID 和散列访问密钥存储在数据库中。
标签: php