【问题标题】:Database password secure, encrypting with php does really makes difference?数据库密码安全,用php加密真的有区别吗?
【发布时间】:2013-04-02 14:39:08
【问题描述】:

关于密码和数据库安全,注意唯一的方法是用户可以访问用户s passwords is if he somehow acess the database itself (probably he got the db password), so does it really makes diference if the user password is hashed or encrypted?
I
m 询问原因如果有人可以访问数据库,他不需要用户密码,他可以对数据库进行更改本身。
关于加密,我在 php 手册上发现河豚是最受关注的,但我在谷歌的第一个结果搜索中发现了一个在线解密器,而且,黑客可能会知道如何解密他已经获得数据库的任何密码密码本身。
你怎么看?密码加密真的需要并且安全吗?提前谢谢你。

【问题讨论】:

  • 这就是 hashing 的用途
  • 那又怎样?人们不会为了给自己超级用户权限而闯入数据库,这样他们就可以在您的论坛或其他地方闲逛。他们闯入数据库以获取凭据,因为大多数人倾向于在多个站点上重复使用相同的密码。您的网站可能“小”,但您的一些用户很可能会在其他网站(例如他们的银行)上使用相同的用户名/密码……您能做的最糟糕的事情就是对安全性持漫不经心的态度。
  • 所以只是因为我的网站很小,它不需要安全吗?我理解你的回答,谢谢你的时间,但我问的是原因,如果用户可以访问数据库本身,他可以获得通行证,散列或加密,而不是使用暴力破解它(也许他可以使用就像他用来访问通行证以访问盐一样,即使它是每个用户的盐)。这可能需要时间,但可以做到,不是吗?

标签: security passwords


【解决方案1】:

我想对已经给出的好的答案做一些补充。

首先,你提到的Blowfish确实是一种加密算法,可以解密。但不要将 Blowfish 与基于 Blowfish 的散列算法 BCrypt 混为一谈。

其次,您对可以读取您的数据库的攻击者的密码进行哈希处理。获得读取访问权限比写入访问权限容易得多,常用的技术是 SQL 注入。您可以在demo 中自己尝试一下,点击 → 箭头填写准备好的输入。

  1. 因此,虽然攻击者可能会读取您的数据库,但这并不意味着他可以对其进行写入。因为他只知道密码的哈希值,所以无法在登录表单中输入原始密码。
  2. 如果攻击者也有写权限,你不能阻止他使用你的账户,但他仍然不知道原始密码,不能在其他网站上尝试。

【讨论】:

    【解决方案2】:

    关于加密,我在 php 手册上发现河豚是最多的 指出,但我在第一个结果搜索中发现了一个在线解密器 在谷歌

    最好的解决方案是散列您的密码,而不是加密它们。许多人错误地将加密与散列混淆(反之亦然)。加密的文本可以被解密,而散列是单向的。即一旦你散列一些东西,你就不能“去散列”它。您正在寻找的是Bcrypt,这是一种基于 Blowfish 密码的散列算法。

    关于攻击者获取您的密码哈希的访问权限:

    除了加入盐以防止彩虹表攻击之外, bcrypt 是一个自适应函数:随着时间的推移,迭代次数可以是 增加以使其变慢,因此它仍然可以抵抗蛮力 搜索攻击,即使计算能力越来越强。

    Bcrypt 的优点在于它很慢,这意味着尝试破解 Bcrypt 哈希相对昂贵(取决于盐的迭代和随机性)。

    【讨论】:

      【解决方案3】:

      如果攻击者掌握了用户的密码,他就有了他的密码。
      如果攻击者获得了用户密码的哈希值,那么他只有密码的哈希值,而不是密码本身。

      现在想想人们的懒惰:检索到的密码可能不是该帐户独有的,但也适用于其他帐户(电子邮件、Twitter、Facebook 等)。这实际上一直在发生。

      如果您只是使用 bcrypt、scrypt 或 PBKDF2 等强密码散列方案存储用户密码的散列,黑客将需要大量资源(时间或处理能力)来猜测或暴力破解密码。

      顺便说一句:哈希函数是不可逆的。那些哈希反转站点只是返回 一个 已知密码+哈希对的密码的巨大查找表。

      【讨论】:

        【解决方案4】:

        有人可以使用 SQL 注入来获取用户的密码。在这种情况下,他可能无法访问除了用户表之外的任何表,所以

        如果用户密码被散列或加密,真的会有所不同

        是的。除此之外,如果您有版主、开发人员和您查看此表,作为用户,如果您查看的是哈希而不是实际密码,我会感觉更舒服,因为我可能会在其他地方使用该密码网站。总体而言,它为您的用户提供了更多的安全性和舒适性,所以真正的问题是,为什么不呢?

        【讨论】:

        • 但是这样想,会指出我们不仅要加密密码,而且很多用户变量他会t like us to see, perhaps, anyone who really want, and work with the dbs 可以看到它们(通过解密)。而关于sql注入,这只会让密码更难用暴力检测,但无论如何,它可以做到,不是吗?
        • @sagits 没错,您的用户给予了一定程度的信任,但密码通常比姓名、地址和电子邮件等信息更敏感。您需要保护您的无知用户,他们可能会为他们的银行帐户、电子邮件和 Facebook 使用相同的密码。 SQL 注入不同于破解密码。您应该阅读它,因为它对安全性非常重要。
        猜你喜欢
        • 2012-01-26
        • 2019-05-02
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多