9

我刚刚学习了散列的概念(“嘿!别忘了盐!”)并使用盐来保护密码。

散列它是一种单向加密(实际上不是加密而是散列),因此它不能被逆向工程。加盐是在散列之前为密码添加前缀或附加随机创建的值,因为散列(只是散列)的问题是,一些天才提供了字典中单词的散列表,以便他们只需将该字典中的散列与用户的表从数据库登录 - W-等待?我说的是数据库中的表吗?所以这意味着有人可以访问数据库,所以我们必须使用盐?如果是这样,那么如果黑客已经可以访问数据库,为什么还要找回密码呢?如果我是他,我会从数据库中得到我想要的所有细节,如果我已经可以通过窗户进入房子,我为什么还要用从房子里偷来的钥匙来开门呢?

那么,为什么要散列?为什么盐?我不明白。请有人帮助我。

提前致谢。

重要提示:我不反对散列或加盐,我只是想澄清一下。

4

5 回答 5

11

如果是这样,那么如果黑客已经可以访问数据库,为什么还要找回密码呢?

原因很多。这里有几个:

  1. 人们重复使用他们的密码,因此不泄露每个人的真实密码确实限制了此类攻击的影响。

  2. 如果没有真正的密码,黑客仍然无法登录,也无法在被黑客入侵的系统上发布新条目。

  3. 谁说所有信息都存储在数据库中?如果数据库仅包含用户名和散列/加盐密码怎么办?然后,了解内容并没有多大帮助。

于 2011-08-18T07:54:18.353 回答
4

如果您有数据库中的明文密码和电子邮件地址,您可能会造成严重破坏!这不是获取已被黑客入侵的站点的凭据,而是获取其他站点的登录信息。

大多数人不会只为一个站点使用一个密码,因此如果您拥有他们主要电子邮件地址的密码,您可能可以访问他们在每个站点上的所有帐户(通过密码重置)。

于 2011-08-18T07:55:19.150 回答
4

拥有数据库中的用户记录并不一定意味着您可以访问数据库。通过网站中的一些泄漏(你好,SQL 注入),您可能能够访问您不应该访问的数据,而不必损害整个服务器。处理不当的备份、共享服务器、不称职或恶意的员工都可能使这一切成为可能。

此外,可能更重要的是,您需要保护您客户在其他网站上的密码。不幸的是,人们到处重复使用他们的密码。如果您的小型聊天室数据库遭到入侵,人们在其银行网站上的密码可能会被泄露。

于 2011-08-18T07:56:59.787 回答
3

使用盐是为了使相同的密码具有不同的哈希值,从而更难找出密码。

散列使​​得通过蛮力方法生成密码需要很长时间(尤其是使用 SHA2),因此找出密码“不可行”。

如果您不知道密码,则哈希对您没有好处,因为在密码字段中输入哈希将不起作用(显然)。

通常黑客只找到用户表和一些基本信息,但如果他们希望能够实际访问该用户信息并更改某些内容,那么他​​们需要实际密码(因为他们不知道整个数据库架构更改某些内容可能看起来非常可疑并且很容易追踪,除非您以个人身份合法登录)

我忘记的最后一件事是人们确实会重复使用密码。因此,也许您入侵了一些没有有用信息的随机网站,但该人在其网上银行中使用了相同的用户/密码组合。如您所见,这可能非常糟糕,因此无法轻松识别密码是关键。

于 2011-08-18T07:54:40.277 回答
1

假设攻击者以某种方式获得了对数据库备份的访问权,其中包含不可恢复的散列密码。然后他们有昨天的所有数据,这很糟糕。但至少他们无法访问明天将在那里的数据,他们无法从真实站点中删除任何内容、破坏它、通过其 CMS 提供恶意软件等。

假设攻击者获得了每个人的明文密码,尤其是当其中包括管理员时。哎呀。

于 2011-08-18T09:14:24.960 回答