是否可以将用户的盐保存在与密码哈希相同的表中?

时间:2011-06-16 12:49:50

标签: hash passwords password-protection salt

没关系,没用吗?它可以保存在另一个表甚至另一个数据库中。

您怎么看?

P.S。为了更高的安全性,我也有恒定的盐“花生”。它是保存在配置文件中的常量值(不在数据库中)。因此,如果黑客想以某种方式破解密码,他也需要访问文件服务器和数据库。

2 个答案:

答案 0 :(得分:22)

是的,可以将每用户盐存储在存储密码 hash 不是密码本身)的同一个表中 - 即使攻击者可以访问对于原始数据库数据,他仍然需要分别尝试每个用户的salt +密码;将salt存储在另一个表中并没有真正添加任何重要的安全性(如果你认为攻击者可以访问数据库,那么假设他只能访问它的一部分对我来说没有多大意义。)

如果您使用salt +花生+密码来创建密码哈希,那么我会说您的设计比80%的系统更安全 - 也就是说,相当安全而不会过度偏执


但是请注意,如果您实际上以可恢复的形式(加密或明文)存储密码,那么您可以将任何安全性抛到窗外 - 盐和散列的全部意义在于您不是以可恢复的形式存储密码。如果您确实存储了密码,那么这是您系统中最薄弱的环节,这是完全不安全的。为了清楚起见:用户表应该只包含salt +花生+密码的 salt 哈希从不密码本身。

答案 1 :(得分:3)

您希望存储1)每用户盐和2)散列密码+盐的结果。您不想存储密码本身。