Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如果数据库是可访问的,那么salt和hash有什么意义?_Security_Language Agnostic_Hash_Salt_Data Retrieval - Fatal编程技术网

Security 如果数据库是可访问的,那么salt和hash有什么意义?

Security 如果数据库是可访问的,那么salt和hash有什么意义?,security,language-agnostic,hash,salt,data-retrieval,Security,Language Agnostic,Hash,Salt,Data Retrieval,我刚刚学会了散列(“嘿!别忘了盐!”)和使用盐来保护密码的概念 散列它是一种单向加密(实际上不是加密而是散列),因此不能反向工程。Salting是在散列之前为密码添加前缀或随机创建的值,因为散列(只是散列)中的问题是,一些天才提供了一个字典中的单词的散列表,以便他们将该字典中的散列与登录数据库中的用户表进行比较-W-wait?我说的是数据库中的表吗?这意味着有人可以访问数据库,所以我们必须使用salt?如果是这样的话,那么如果黑客已经可以访问数据库,为什么还要恢复密码呢?如果我是他,我只需要从数

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

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

那么,为什么要吃杂烩?为什么是盐?我不明白。求求你,谁来帮帮我

提前谢谢

重要提示:我并不反对散列或腌制,我只是想澄清一些事情

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

原因很多。以下是一些:

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

  • 如果没有真正的密码,黑客仍然无法登录,比如说,在被黑客攻击的系统上发布新的条目

  • 谁说所有信息都存储在数据库中?如果数据库仅由用户名和哈希/加盐的密码组成,该怎么办?那么,了解内容并没有多大帮助


  • Salt的使用使得相同的密码有不同的散列,这使得试图找出密码更加困难

    散列使得通过蛮力方法生成密码需要很长时间(尤其是使用SHA2),从而使查找密码变得“不可行”

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

    通常黑客只会找到用户表和一些基本信息,但如果他们想真正访问用户信息并更改某些内容,则需要实际密码(因为他们不知道整个数据库模式,所以更改某些内容可能看起来非常可疑,并且很容易跟踪,除非您以个人身份合法登录)


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

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


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

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


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

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


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

    +1对于SQL注入,是的,这是真的,黑客只能访问一个表,但不能访问整个数据库……谢谢。@domanokz,这不只是SQL注入。您忘记了某个调试语句,一个逻辑错误转储了m比它应该的更丰富的数据…有一千种不同的可能性。不是完全相同的,但您可能还想看看: