1

关于密码和数据库安全,请注意用户访问用户m 的唯一方法是询问是否有人可以访问数据库,他不需要用户密码,他可以对数据库本身进行更改。 关于加密,我在 php 手册上发现河豚是最受关注的,但我在谷歌的第一个结果搜索中发现了一个在线解密器,而且,黑客可能会知道如何解密他已经获得数据库的任何密码密码本身。 你怎么看?密码加密真的需要并且安全吗?先感谢您。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


4

4 回答 4

0

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

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

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

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

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

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

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

于 2013-04-10T16:23:13.633 回答
0

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

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

关于攻击者访问您的密码哈希:

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

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

于 2013-04-10T16:24:30.373 回答
0

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

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

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

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

于 2013-04-10T16:29:17.813 回答