【问题标题】:How to Email user new link to create a password如何通过电子邮件向用户发送新链接以创建密码
【发布时间】:2013-02-17 22:24:40
【问题描述】:

根据this other post,我需要:

PHP password recovery 您不会“恢复”密码。您所做的是两件事之一。

  1. 通过电子邮件向用户发送一个链接以创建新密码,覆盖当前密码。
  2. 通过电子邮件向用户发送一个随机生成的密码,然后要求他们更改。

我已经完成了一个庞大的项目,我急切地请求工作示例,或者至少您对如何执行此操作的最佳建议;例如:#1 电子邮件用户链接以创建新密码,覆盖当前密码。我被告知数据库有密码盐渍,并使用河豚。我真的不知道这到底是什么意思,我正在检查代码以试图弄清楚如何添加“重置密码?”链接到他们当前的登录页面。

那么,如果您愿意,您能否帮助如何通过电子邮件向用户发送一个随机生成的密码,然后让他们更改它[上面的#2?

任务是原样的,到目前为止我不知道要提供什么代码;我希望做过这件事的人可以告诉我什么是有效的,我会尝试实现它。感谢您的帮助!

【问题讨论】:

  • 维基百科有一个解释密码加盐的页面:en.wikipedia.org/wiki/Salt_(cryptography)
  • 如果您不知道什么是加盐或如何识别所使用的散列类型或如何应用加盐,则不确定是否有人可以帮助您。您必须阅读代码并了解它是如何应用的,否则这里给出的任何示例都对您毫无用处。
  • 你说你咬掉了一个巨大的项目,但根据你的要求,这听起来更像是你注册了一个你完全没有资格参加的项目。您尝试完成的工作是,如果犯了一个小错误,可能会使网站面临巨大的安全问题。何不为你的名声做个好事,为你同意工作的人做个好事,然后优雅地走开,直到你有资格。
  • 我真的希望这不适用于我拥有帐户的任何网站。
  • 我一直担心自己可能不合格,但我已经从零开始征服了以前的项目,并且在退出之前只需要更多信息。我仍在探索过程中,想看看你们对我所要求的复杂性和范围的看法。有什么有形的东西可以摆在我面前,而不是仅仅指出我可能根本不合格吗? [哈希是 sha1,想知道我是否可以重用他的代码]。我明白你的意思,但是[并且不会排除它!]我希望收到你的来信,并真诚感谢你愿意提供帮助。

标签: php email passwords reset


【解决方案1】:

生成密码重置的常用方法如下所示:

  1. 检查电子邮件地址是否属于注册用户。
  2. 随机生成不可预知的代码。
  3. 将此代码与用户 ID 和到期日期一起存储在数据库中。
  4. 将此代码的链接发送到给定的电子邮件地址,因此只有用户自己会获得此链接。
  5. 当用户点击链接时,提取代码,并检查其哈希是否在数据库中。
  6. 如果它在数据库中并且尚未过期,则您知道用户 ID,您可以允许用户输入新密码(不要将自己生成的密码发送给用户)。
  7. 将代码标记为已使用或从数据库中删除。

我希望这可以让您了解必要的步骤。如果你想了解更多关于 BCrypt 和 salting 的知识,你可以看看这个 tutorial 关于散列密码。

【讨论】:

  • 我正在与公司总裁密切合作,不会产生未经他绝对审查的代码。非常感谢您的警告和类似的想法。
猜你喜欢
  • 2013-06-17
  • 2019-07-26
  • 2019-06-18
  • 2015-06-10
  • 1970-01-01
  • 2014-05-23
  • 2011-04-16
  • 2012-01-07
  • 2016-04-08
相关资源
最近更新 更多