如何从重置密码的上下文中单击过期链接工作

本文关键字:单击 过期 链接 工作 上下文 密码 | 更新日期: 2023-09-27 18:15:40

我在设计&开发"重置密码"表单,用户提供用户名/电子邮件地址,以便应用程序在电子邮件中发送链接,用户点击并输入新密码。我的兴趣是关于这个链接,我应该如何继续做这些工作(我不是在寻找基于意见的答案,而是行业惯例,对你的应用程序有效的步骤)。

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

  • 如果链接也包含过期信息,如果点击过期链接

  • 该怎么办?

你也可以帮助我,提供我在目前的执行计划中可能遇到的其他问题。

如何从重置密码的上下文中单击过期链接工作

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

  1. 用户点击"密码丢失",输入邮箱地址

  2. 提交时,生成重置代码,使主密码不受影响。(也应该加盐捣碎)。设置复位码使用超时时间

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

我决定将重置代码作为url的一部分,以便于用户使用。至于书签,你不能像那样保护所有用户。如果他们想要收藏那一页,就让他们去吧。以上措施应该可以阻止他们提交任何出格的东西。

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

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

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

在resetPassword.php中,您使用GET参数中的信息+您拥有的旧密码来验证该哈希值,如果哈希值匹配,则继续重置密码。这样,链接将在它应该过期的时候过期,并且在密码更改后,将不可能使用该链接重置密码。

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