在某些情况下,我看到开发人员使用 config.php 中的加密密钥来散列密码并将其存储在数据库中。我想知道这样做更好,还是每次都创建一个随机盐(例如在函数中)更好?
好吧,我猜在第一种情况下,您不必在数据库中存储(和)盐,但它是否足够安全,如果与密码匹配怎么办?
在某些情况下,我看到开发人员使用 config.php 中的加密密钥来散列密码并将其存储在数据库中。我想知道这样做更好,还是每次都创建一个随机盐(例如在函数中)更好?
好吧,我猜在第一种情况下,您不必在数据库中存储(和)盐,但它是否足够安全,如果与密码匹配怎么办?
您使用盐来防止攻击者的蛮力攻击在整个哈希密码数据库中摊销。使用每个密码唯一的盐,即使是相同的密码也会散列到不同的哈希值,从而迫使攻击者单独暴力破解每个密码。通过使用静态盐(实际上称为胡椒)将其与真正的盐区分开来,相同的密码散列到相同的散列,因此允许攻击者更快地暴力破解大量密码散列(你不会相信如何许多人使用“monkey”作为他们的密码)。
所以:
确实,随机生成的盐会产生更高的安全性,但同样可以访问您的密码哈希列表以破解它们的任何人都可能访问您的数据库,在这种情况下,他们可以访问你的盐。
不要使用任何大的东西来散列密码,而是使用 MD5 加盐和everythi