【问题标题】:Changing Passwords PHP更改密码 PHP
【发布时间】:2011-06-29 10:17:53
【问题描述】:

如何在考虑 md5 的情况下允许更改密码。创建帐户时,将在 md5 中输入密码。所以现在当我显示密码字段时,它们当然是在 md5 中(不要担心出于测试目的,我在字段中显示密码而不是显示哈希或破折号)。

那么我该如何更改密码呢?当它们被改变时,它们也需要在 md5 中。

【问题讨论】:

  • 你为什么首先在密码字段中显示任何内容?
  • 使用 sha1 而不是 md5 有一个很好的技巧。 md5 可以轻松解密 64000 倍

标签: php passwords md5


【解决方案1】:

不要在密码字段中显示任何内容。有3个字段。 1个原密码(安全用),2个新密码(验证用)。

提交时,检查旧密码,如果正确,md5新密码并保存。

【讨论】:

    【解决方案2】:

    在数据库中,您用新的 MD5 哈希覆盖旧的 MD5 哈希。还是您在问用户界面问题?

    【讨论】:

      【解决方案3】:

      MD5 哈希是一种单向哈希,无法解密,因此无需显示。更改密码会使用新的 MD5 哈希更新数据库。

      【讨论】:

        【解决方案4】:

        那么我该如何更改密码呢?

        我认为你应该阅读You're Probably Storing Passwords Incorrectly (来自作者stackoverflow.com的文章):

        我们在密码哈希中了解到 计划,速度是敌人。我们得知 MD5 是为速度而设计的。所以, 我们知道 MD5 是敌人。

        如果您必须存储您的密码(有关更多提示,请阅读下文)使用phpass 安全地存储您的密码。我建议您阅读网站上解释How to manage a PHP application's users and passwords 的文章。它将教您如何使用电子邮件验证令牌安全地进行操作。

        为了好玩,我还创建了一个库(请同时阅读下文),它使用出色的 phpass 为您完成此任务。它托管在github,如果您愿意,可以查看它。特别是你应该看看Authentication ClassAuthenticationTest

        OpenID

        此外,我想指出您应该改用 OpenID、Facebook Connect、Google 朋友连接之类的东西。您不应该存储您的密码,因为这是有风险的业务,就像 The Dirty Truth About Web Passwords 解释的那样。

        杰夫·阿特伍德:

        我不是来批评 Gawker 的。在 相反,我要感谢他们 用于广泛、大胆的浮雕 关于网站的肮脏真相 密码:我们都过得更好 没有他们。如果你想看一个 没有 Gawker 风格的未来网络 密码泄露——停止信任 每个随机的互联网站点都有一个 唯一的用户名和密码!要求 他们允许您使用您的 互联网驾照——也就是说, 您现有的 Twitter、Facebook、 Google 或 OpenID 凭据——用于 登录他们的网站。

        我在 github 上也有一个不错的 OpenID library,它使用带有 openid-selector 的 LightOpenID。您可以在我的共享主机提供商处看到一个演示并运行:http://westerveld.name/php-openid/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-15
          • 1970-01-01
          • 1970-01-01
          • 2016-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-19
          相关资源
          最近更新 更多