【发布时间】:2011-03-14 09:38:47
【问题描述】:
当有人丢失密码时,他们会单击丢失或忘记的密码链接。 他们需要输入他们的电子邮件地址,然后回答他们自己的秘密问题 如果秘密问题是正确的,将向他们发送一封电子邮件,其中包含 24 小时后过期的链接。
在发送电子邮件时,会在包含此信息的数据库表中输入一条记录: - 需要重设密码的人的电子邮件 - 重置密码将过期的小时 - 提交重置密码请求的小时数。
发送的链接将引导用户进入一个允许他们输入新密码的表单。 在此表单中,他们需要输入他们的电子邮件地址和密码 X2。
当他们点击提交时,将对 db 进行检查以确保电子邮件有效(密码正在重置)并且尚未过期(通过比较两个日期以查看过期时间是否已过,即 24 小时)
如果电子邮件有效且尚未过期,并且两个密码匹配且满足最低要求,则应用新密码。
成功时会给出确认消息。
第一季度。这是密码恢复的好模型吗? Q2。如何确保发送到用户地址的链接是唯一的?没有人会得到相同的链接?这样就没有人可以只进入密码重置页面并尝试不同的电子邮件,而是让每个需要重置的帐户都有自己的唯一 URL,该 URL 仅适用于该帐户。
关于第二季度:
我在想,当用户请求重置密码时,会生成一个随机唯一 ID,并将其存储在 24 小时后过期的同一记录中。这个随机唯一 id 的列可以称为“摆脱”
将发送给用户的电子邮件中的链接将以 ?rid=xxxxxxxxxxxxx 结尾
当用户在重置密码的页面点击提交时,页面顶部的“rid”用于从db中获取对应的邮箱地址,与表单中的邮箱地址进行对比。这样做可以确保每个密码重置案例都有自己的唯一 URL,其他帐户无法使用该 URL 重置其密码。
这是一个可行的解决方案吗?
任何贡献或建议将不胜感激。
【问题讨论】: