【问题标题】:Php reset password process, not sure how to retrive from tokenPHP重置密码过程,不知道如何从令牌中检索
【发布时间】:2014-06-24 14:47:55
【问题描述】:

我已经阅读了很多关于使用令牌重置密码的页面。

我理解到从链接中获取令牌 $_GET['token'];

但是在那之后我没有关注,我该怎么处理令牌? 我只是检查数据库中是否存在? 因为我在此链接上阅读了有关 reset_password 表中的交叉引用的信息,但我不明白这意味着什么。 Looking for a some good options to send users reset password emails

我是否只检查令牌是否存在并选择同一行的电子邮件? 然后我允许用户使用该电子邮件重置密码?

【问题讨论】:

    标签: php token


    【解决方案1】:

    使用令牌背后的想法是安全原因。

    您通常使用只有您可以看到的信息来创建自己的令牌。

    考虑一个场景,有人知道要重置某人的密码,他所要做的就是访问特定链接并将电子邮件添加到该&email={user_email}

    那会非常不安全

    但是,如果您使用只有您知道的信息对令牌进行哈希处理,您可以执行以下操作:

    &email={user_email}&token={token}
    

    然后在您的代码中检索令牌,检查它是否符合您的特定规则,然后才重置该电子邮件密码。

    让我举个例子,说明如何以只有你可见的方式对其进行散列,并享受额外安全功能的好处。

    假设您使用电子邮件 + 今天的日期对其进行哈希处理:

    $token = md5($email+date('Y-m-d',time()))
    

    这将使令牌仅在今天有效。

    【讨论】:

    • 我想我有点理解,我理解生成的链接上附加的令牌,但电子邮件地址不对?因此,如果我用 $email 和其他东西对其进行哈希处理,接下来我要做的是检查数据库中是否存在它?如果是这样,我将电子邮件地址拉到该令牌旁边,然后我允许重置密码?
    • 您有两个选择。您可以散列令牌并将其作为不同的 get 变量与电子邮件变量一起发送,或者您可以尝试将电子邮件与令牌放在一起(类似于 bla@bla.com_1aisd2309asiod,然后使用 php 将其分隔在代码中explode 函数。再次.. 只是一个例子。
    • TBH 是的,您也可以按照您的建议进行操作,从共同响应该哈希的数据库中提取电子邮件,但我不建议这样做。最好它同时发送电子邮件和令牌,并确保该令牌适合您创建的电子邮件哈希,如果是,请重置密码并将带有新密码的电子邮件发送给用户。
    • 出于某种原因,我不确定为什么电子邮件在链接中时看起来不安全?没关系吧?
    • 安全的,不用担心。
    【解决方案2】:

    您可以询问用户要重置密码的帐户的电子邮件。然后您可以验证电子邮件是否与令牌对应,然后发送重置密码电子邮件。

    为避免安全风险,密码重置链接(在电子邮件中发送)可能仅在几个小时 (8) 内可用,并且仅当用户单击它时才会重置密码,而不是之前。因此,如果他没有您的令牌和您的电子邮件地址,并且如果他无权访问您的电子邮件帐户,则没有人可以重置您的密码。

    【讨论】:

      猜你喜欢
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 2020-11-19
      • 2016-01-03
      • 2019-05-02
      • 2012-05-21
      相关资源
      最近更新 更多