3

我正在设计和开发“重置密码”表单,其中用户提供用户名/电子邮件地址,以便应用程序将在电子邮件中发送一个链接供用户单击并输入新密码。我的兴趣全在于那个链接,我应该如何继续做这些工作(我不是在寻找基于意见的答案,而是基于行业实践,适用于您的应用程序的步骤)。

  • 确保链接未启用书签(不允许他使用相同的链接重置密码)

  • 如果链接中还包含过期信息,点击过期链接怎么办

您还可以通过提供当前执行计划可能遇到的其他问题来帮助我。

4

3 回答 3

3

我刚刚实现了类似的东西。

  1. 用户单击“丢失密码”并输入电子邮件地址。

  2. 提交时,生成一个重置代码,以便主密码不受影响。(也应该是盐哈希)。设置使用重置代码的超时时间。

  3. 用户访问更改密码表格。输入电子邮件、重置密码、新密码和确认密码。成功后,清除重置代码并设置新密码,重定向到登录页面。

我决定将重置代码作为 url 的一部分,以方便用户使用。至于书签,你不能这样保护所有用户。如果他们想为该页面添加书签,让他们。上述措施应阻止他们提交任何不合时宜的内容。

于 2011-11-24T08:35:17.150 回答
2

在重置表单的提交上,您生成一个随机代码,将其存储在数据库中(如果需要,则带有到期信息,如果已使用则带有标志)并将其作为参数包含在链接中。

该链接将用户带回到重置表单,您可以在其中检查代码(参数)是否在数据库中并且尚未过期或已使用。

于 2011-11-24T08:35:28.240 回答
2

我喜欢的方法是创建一个看起来像这样的字符串:[username] [currentPassword] [expirationDate],对其进行哈希处理,然后创建一个看起来像这样的链接:resetPassword.php?username=[username]&exp=[过期日期]&hash=[哈希]

在 resetPassword.php 中,您使用 GET 参数中的信息 + 您拥有的旧密码验证此哈希,如果哈希匹配,则继续重置密码。这样,该链接将在到期时到期,并且在更改密码后无法使用该链接重置密码。

另一种方法是将重置密码代码存储在数据库中。

于 2011-11-24T08:39:46.257 回答