【问题标题】:how to recover crypted password in php如何在php中恢复加密的密码
【发布时间】:2013-10-08 20:43:16
【问题描述】:

当新用户注册到我的站点时,它使用 crypt() 方法,然后将其存储在 DB 中。

我想创建一个“我忘记了密码”页面,用户可以通过邮件获取他的密码。

我的问题很简单: 例如,我该如何转换:“$2a$13$Ku2hb./9aA71dPo/E015m.WBs6.RsDC/BL8jbz8dMRrmm0jGNIJRO” 到“某些用户密码”?

【问题讨论】:

  • 你不想那样做。没有理智的网站会通过电子邮件发送密码。

标签: php passwords crypt


【解决方案1】:

做现在所有其他网站都会做的事情 - 不要提供检索密码的方法。相反,请提供一种重置密码的方法。

当用户点击“我忘记了密码”时,向他们发送一个链接,他们可以使用该链接重置密码。设置链接有效期的到期日期。如果您想格外小心,请在之后发送一封电子邮件,确认密码刚刚重置,并提供一个链接,以防用户自己实际上并没有这样做。

【讨论】:

    【解决方案2】:

    crypt()函数使用单向加密,也就是说没有decrypt()函数。

    基本上你有两个选择:

    1.实现自己的加密方法,以后可以解密-不推荐-

    2.改为使用“重置密码”

    【讨论】:

    • 感谢您的评论。 “重置密码”似乎是个好主意!
    【解决方案3】:

    你不能,因为crypt() 不是加密函数,它是单向哈希函数。

    注意:没有解密函数,因为 crypt() 使用单向算法。

    无论如何,你不应该做你所描述的事情。如果攻击者可以访问某人的电子邮件,并且每个网站都应请求以明文形式向用户发送“丢失的密码”,那么该攻击者可以获得更多的密码。

    您应该让用户在证明其身份(可能通过回答问题)并拥有该电子邮件后输入新密码。

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 2015-11-12
      • 2011-06-13
      • 2012-09-30
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多