即使密码是由服务器生成的,也要隐藏密码?

时间:2015-06-20 18:18:46

标签: php mysql security hash

当服务器生成密码并且用户无法更改密码时,我是否应该对我的门户网站的用户进行哈希处理?逻辑值:

  1. 用户无法在其他任何地方使用此密码,因为它是由服务器生成的。

  2. 即使有人非法访问数据库,他们也可以更改密码并查看密码,但对于他们来说没用,因为它没有在其他任何地方使用。

  3. 我是对的吗?或者哈希仍然应该实施......?

3 个答案:

答案 0 :(得分:5)

安全性是分层次完成的,每一层都旨在提高做出你不想要的东西的成本。保安人员是否可以防止抢劫?不,但他们提高了承诺的成本,大多数人都不会打扰。

哈希不会阻止人们攻击您的用户,但是未加密的密码是对任何能够访问该数据以登录您的用户的人的公开邀请。只要你发现黑客就会自由地开帐户。

答案 1 :(得分:2)

应该实现散列,因为散列是为了防止服务器泄露,而不是客户端/最终用户危害。为了更高的安全性,您还应该在散列密码时使用salt和密码哈希算法。

理由是,如果您的服务器受到攻击,无论是通过外部攻击(例如SQL注入,SSH心跳等)还是内部攻击(例如恶意员工,如果您拥有它们),那么密码或哈希可以是检索。如果检索到它们,您希望攻击者很难使用检索到的数据来破坏您的系统。使用盐的哈希密码对于攻击者来说比使用正确的用户名使用的明文密码要困难得多。

  • 非散列密码:如果有人可以检索非散列密码,他们可以直接使用它们来冒充最终用户。
  • 没有盐的哈希密码:如果有人可以检索无盐创建的哈希密码,他们可以执行字典或暴力攻击,通过在字典或所有字符串中散列单词来查找密码。
  • 使用salt加密密码:如果您添加了一个盐,那么检索到您的哈希密码的攻击者也需要知道您的盐以有效地攻击密码,例如:通过字典攻击。

此外,在散列密码时,您应该使用专门为密码设计的散列算法,例如: bcrypt,而不是像SHA这样的通用哈希算法。这是因为通用算法设计得非常快,使攻击者更容易执行字典或暴力攻击。像bcrypt这样的密码散列算法散列很慢,因此会降低攻击者的速度。

答案 2 :(得分:-2)

总是哈希密码永远不会以纯文本形式存储它们,即使您认为只会看到/使用它。