【问题标题】:Better way save password in mysql which can be decrypted also using php更好的方法将密码保存在mysql中,也可以使用php解密
【发布时间】:2011-01-09 00:43:13
【问题描述】:

我目前正在使用md5函数加密我的密码并保存到无法解密的mysql数据库中。

现在我的用户希望当他们忘记密码时,他们应该得到相同的(旧)密码而不是新密码。

所以我的问题是我应该使用什么来加密我的密码并存储在 mysql 数据库中。 我也可以解密那个密码。

我在 php 和 mysql 上运行。

谢谢

阿维纳什

【问题讨论】:

  • 在实施此方法之前三思而后行……您将引入比它解决的更多的安全问题。
  • 您可以恢复其原始值的密码是错误的。不要这样做。
  • 最近,密码泄露变得非常普遍。如果您的数据库中没有用户密码,它们就不会那么容易被窃取。 news.google.com/news?q=password+breach
  • MD5 可能没问题。重要的是加盐等。
  • 他们为什么要恢复他们已经忘记的相同密码 - 至少 - 一次?

标签: php mysql passwords encryption


【解决方案1】:

别这样……

首先,使用比 md5 更好的东西。然后创建一种“重置”密码的方法,但永远不能真正从数据库中检索密码......

这会降低您的应用程序的安全性,但可能会更糟;如果您的数据被盗,您和您的用户都会遇到问题!有人将拥有一个包含您所有用户的用户名和密码的数据库!

【讨论】:

  • +1 用于密码重置。 md5() 有什么问题吗?如果有,有哪些更好的例子?我自己真的很感兴趣。
  • @Pekka:阅读 WP 文章:en.wikipedia.org/wiki/Md5 MD5 是一种用于完整性检查等的散列文件的好方法,但不再是最新的加密工具。跨度>
  • @Pekka:这个:en.wikipedia.org/wiki/MD5#Collision_vulnerability 更好的东西:首先查看 SHA-512。
【解决方案2】:

加密而不是散列意味着您必须存储解密密钥,这意味着您的应用程序的安全性会降低。重置他们的密码,然后将新密码发送给他们。

【讨论】:

  • 唯一正确的方法。用户的密码与我们(网站所有者和程序员)无关。
【解决方案3】:

不要这样做,这会危及您的安全!单向加密的整个想法是,如果您的数据库被黑客入侵,您将不会面临所有用户密码及其电子邮件地址都将被知晓的问题!

【讨论】:

    【解决方案4】:

    crypt()openssl 怎么样?

    【讨论】:

      【解决方案5】:

      这样做不安全,您最好创建一种重置密码的方法

      【讨论】:

      • 为什么在 code-zoop 之后几分钟发布多余的答案?只需投票给他/她。
      【解决方案6】:

      如果您正在运行一个没有安全问题的内部私人站点,只需将密码与每个字节的 XOR 0xAD 一起存储。否则,重置是唯一的选择。

      【讨论】:

        【解决方案7】:

        不可能以这样的方式存储密码,在没有两者的情况下它仍然可以恢复

        1) 将解密密钥存储在您的代码/数据中(这违背了对密码进行散列/加密的目的)

        2) 使用公钥/私钥加密对密码进行加密,通过某种可以恢复密码的半手动过程路由恢复。

        最简单的解决方案是要求您的用户提供/维护当前的电子邮件地址,并依靠该地址的安全性在请求时提供新密码。

        C.

        【讨论】:

          【解决方案8】:
          • 创建动态盐(2,一个“永久”在散列/加密之前与密码混合,另一个是动态的,每次用户登录时都会更改);

            $dynamicSalt = '';
            for ($i = 0; $i < 8; $i++) 
            {    
                $dynamicSalt .= chr(rand(33, 126)); 
            }
            
          • 永远不要以任何可以帮助您以后“解码”密码的方式保存密码,找回原始密码不是由您决定,而是让用户重置它

          如果您确实需要保存原始密码,请创建一个仅具有 WRITE 权限的数据库帐户并将其存储在其他数据库中(在另一台服务器上?)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-03
            • 1970-01-01
            • 2019-10-17
            • 2020-02-16
            • 1970-01-01
            • 2010-11-20
            • 2019-02-15
            • 2016-08-14
            相关资源
            最近更新 更多