Security 查看我的设计:网站密码重置功能
当有人丢失密码时,他们会单击“丢失或忘记密码”链接。 他们需要输入自己的电子邮件地址,然后回答自己的秘密问题 如果秘密问题是正确的,将向他们发送一封电子邮件,其中的链接在24小时后过期 发送电子邮件时,会在保存以下信息的数据库表中输入一条记录: -需要重置密码的人员的电子邮件 -密码重置将过期的小时数 -提交密码休息请求的时间 发送链接将引导用户进入一个表单,允许他们输入新密码。 在此表单中,他们需要输入电子邮件地址和密码 当他们单击submit时,会对db进行检查,以确保电子邮件有效(密码正在重置)且尚未过期(通过比较两个日期查看是否已过过期时间,即24小时) 如果电子邮件有效且尚未过期,且两个密码匹配并满足最低要求,则应用新密码 成功时会发出确认消息 问题1。这是密码恢复的好模式吗? 问题2。如何确保发送到用户地址的链接是唯一的?没有人会得到相同的链接?因此,没有人可以直接进入密码重置页面并尝试不同的电子邮件,而是让每个需要重置的帐户都有自己的唯一URL,该URL仅适用于该帐户 关于第二季度: 我在想,当用户请求重置密码时,会生成一个随机唯一id,并存储在24小时后过期的同一记录中。此随机唯一id的列可以称为“rid” 发送给用户的电子邮件中的链接将以?rid=XXXXXXXXXXXX结尾 当用户在重置密码的页面中单击submit时,页面顶部的“rid”用于从db获取相应的电子邮件地址,并将其与表单中的电子邮件地址进行比较。这样做可以确保每个密码重置案例都有自己的唯一URL,其他帐户无法使用该URL重置其密码 这是一个可行的解决方案吗Security 查看我的设计:网站密码重置功能,security,web-applications,Security,Web Applications,当有人丢失密码时,他们会单击“丢失或忘记密码”链接。 他们需要输入自己的电子邮件地址,然后回答自己的秘密问题 如果秘密问题是正确的,将向他们发送一封电子邮件,其中的链接在24小时后过期 发送电子邮件时,会在保存以下信息的数据库表中输入一条记录: -需要重置密码的人员的电子邮件 -密码重置将过期的小时数 -提交密码休息请求的时间 发送链接将引导用户进入一个表单,允许他们输入新密码。 在此表单中,他们需要输入电子邮件地址和密码 当他们单击submit时,会对db进行检查,以确保电子邮件有效(密码正在
如有任何贡献或建议,我们将不胜感激。Q1。嗯,有一个缺陷。为什么要求用户输入新密码?我宁愿生成一个新的随机密码并发送给他。收到密码后,用户可以使用此随机生成的密码登录,然后在其个人资料中更改密码 我建议在大多数网站上使用以下系统:
- 设置密码重置比率。提交表单后,IP地址和提交的数据将被记住:现在,在几分钟内,来自同一IP地址的任何人都无法重置密码
- 新生成的密码不会替换旧密码:相反,两者都可以使用。假设有人重置了另一个用户的密码。如果此用户尚未阅读或收到使用新密码的邮件,则必须仍然能够使用旧密码登录
https://site.com/account/reset?key=a890ea8219175f890b7c123ee74a22
)。某个与我的帐户绑定的唯一散列,在某某几个小时后过期。尽可能使用SSL