【问题标题】:php reset password linksphp重置密码链接
【发布时间】:2013-03-23 21:57:33
【问题描述】:

我已经创建了一个用户登录系统。

在我忘记密码的页面中。我使用 php 电子邮件给用户。 用户将收到一封带有链接的电子邮件

链接-

....?email=abc@gmail.com&confirm_code=uefu8878ef...

用户可以点击此链接访问reset_password页面。

但是这是使用 GET,这意味着任何人都可以检查浏览器历史记录以访问此页面并重置密码。

有什么建议吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    链接使用后,将确认码标记为已使用/无效,不能再次使用。

    【讨论】:

    • 另外,在创建代码时,添加一个过期日期。如果不使用,不要让它永远坐在那里。
    • 我也建议使用 post。除了上面提出的解决方案
    • 我想我也会在电子邮件中使用 sha1,如果用户单击链接,请立即从 db 中删除代码
    • @chien pin wang:根据随机数重新生成另一个令牌:-)
    • 你不能有来自电子邮件的帖子链接,但其余的都是正确的:每次做一个随机哈希,将它专门链接到那个帐户,一旦使用就转储它,然后给它一个有效期(最多 24-48 小时)。
    【解决方案2】:

    如果您还想隐藏电子邮件,请生成自定义令牌来执行此操作。令牌必须是唯一的,并与数据库中的电子邮件地址保持链接。已使用时删除(或标记已使用)。

    【讨论】:

      【解决方案3】:

      将您的确认代码保存在数据库中,并在它和电子邮件地址之间建立链接并给它一个时间,以便在时间到期后它会过期,现在每次请求此页面时首先查看确认代码是否与这封电子邮件,如果它是检查使用时间和数据库内的时间,那么如果它没有过期,则将其标记为已授权,然后处理请求,否则完全删除它的记录

      然后关于到期更安全,我认为如果您将到期日期设置为 1 小时,这将是有意义的。希望这会有所帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        相关资源
        最近更新 更多