【问题标题】:How to get an old password in ORM?如何在 ORM 中获取旧密码?
【发布时间】:2013-02-23 11:16:27
【问题描述】:

我需要一个旧密码(未经过哈希处理)才能发送给用户,但我认为这不是一个好主意?我阅读了文档,只有一种方法可以获取散列密码。我该怎么做才能获得真实密码?

【问题讨论】:

  • 是的,这绝对不是个好主意。
  • 我知道,但我真的需要它,或者我必须在数据库中存储一个真正的密码,然后发送给用户,然后才能重新保存为哈希...
  • 说真的,不要那样做。存储未经哈希处理的密码绝对是一场安全灾难。
  • 可以做到,一切顺理成章。
  • 所以,我想我必须重建我的算法,谢谢!

标签: php kohana kohana-orm kohana-3.2 kohana-auth


【解决方案1】:

密码在经过哈希处理后永远不应该被恢复干净,而且大多数情况下甚至是不可能的。我绝对建议您提供一个重置密码链接,而不是提供旧链接。

带有 MD5、SHA1、SHA2、Blowfish 和其他密码的散列密码是一种加密方式,这意味着您不应该能够解密它们,因此使它们安全(第一个不是实际上是安全的,但这不是这里的主题)。

【讨论】:

    【解决方案2】:

    您无法获取原始密码;这就是使用哈希的意义所在。

    如果用户需要一个新密码,则生成一个一次性、短暂的随机字符串,并将其作为 URL 的一部分通过电子邮件发送给他们。当他们点击链接时,提示他们输入新密码。

    请参阅the OWASP Forgot Password Cheat Sheet,了解有关如何尽可能安全地执行此操作的更多建议。

    【讨论】:

    • 用户不需要新密码,他需要密码,原因是新用户的创建者不是用户,是另一个人(admin)。
    • @AviAtion — 管理员不需要知道用户密码。如果他们需要告诉用户密码是什么,那么系统需要改进,以便可以直接联系用户。如果他们需要能够以用户身份登录来执行测试,那么要么(1)让他们在用户在场的情况下这样做,要么(2)拥有su风格的系统,管理员可以在其中输入管理员用户名、管理员密码和一个用户用户名,用于在不知道用户密码的情况下以用户身份登录。密码应保密,除了密码所属的用户外,任何人都不应知道密码。
    【解决方案3】:

    您无法恢复旧密码(未散列),因为它没有存储在数据库中。仅存储其哈希值。 Hashed 不能被解密(这就是为什么它被称为 hash)ORM 使用这个模型来解决很多安全问题。

    发送原始密码是真正的坏主意。 如果你还想这样做:

    1. 如果您在注册过程中自己生成密码(然后将其邮寄给用户并保存)
    2. 如果用户正在设置他们的密码。您将把它作为 POST 变量。在将其保存到数据库的同时,也将其邮寄。
    3. 如果用户使用忘记密码来恢复他们的密码。然后先重置密码(生成一个新密码并保存到数据库中)并发送给用户。

    【讨论】:

      【解决方案4】:

      你不能。 Kohana 中的散列密码很可能是使用单向加密加密的密码。我的意思是你不能解密它并以明文形式获取它。您不应以明文形式存储应用程序密码以保护用户。

      http://en.wikipedia.org/wiki/Cryptographic_hash_function

      您可以为用户生成一个新的临时密码并将其发送到用户电子邮件,但我认为重置密码链接是最好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 2015-02-27
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        相关资源
        最近更新 更多