Authentication 网站如何长期存储密码?

Authentication 网站如何长期存储密码?,authentication,web,passwords,Authentication,Web,Passwords,那么,网站如何长期保存密码呢? 我指的是真正重要的网站,比如政府、大型电子商务或社交网站 当然,它们会将密码的散列(或盐渍散列)存储在与Web服务器连接的用于身份验证的数据存储中,但这是真的吗 注意:我不是在问散列或盐析,我是在问元数据(例如,散列或盐析散列)的存储位置,以便它始终可用 事实上,像Facebook这样的网站如何储存密码?我猜他们会有多份散列在世界各地?并偶尔备份到磁带?对于大多数应用程序,您只需要用户密码的哈希值。出于安全原因,通常不会存储实际密码。如果数据存储遭到破坏,您就不会

那么,网站如何长期保存密码呢? 我指的是真正重要的网站,比如政府、大型电子商务或社交网站

当然,它们会将密码的散列(或盐渍散列)存储在与Web服务器连接的用于身份验证的数据存储中,但这是真的吗

注意:我不是在问散列或盐析,我是在问元数据(例如,散列或盐析散列)的存储位置,以便它始终可用


事实上,像Facebook这样的网站如何储存密码?我猜他们会有多份散列在世界各地?并偶尔备份到磁带?

对于大多数应用程序,您只需要用户密码的哈希值。出于安全原因,通常不会存储实际密码。如果数据存储遭到破坏,您就不会希望黑客能够获得用户的实际密码

事实上,这就是为什么散列首先要加盐的原因。Salting使得使用rainbow表(一个预计算的表,包含通过某种类型散列的密码的所有可能组合)来恢复用户可能在其他站点上使用的原始密码变得更加困难


这个问题在这里得到了更深入的回答:

这个问题太宽泛了,无法回答。它不仅与政府网页相关;如果存储了明文密码,这将是一个真正的安全问题。根据安全需要,大多数情况下都会使用密码哈希。如果用户需要证书(例如,存储在卡上,或通过另一个进程获得),则服务器上可能存储有用户的公钥(而不是散列)


你的问题也涉及完全不同的主题。当然,web后端数据库也需要备份(不仅仅是密码备份),还有一些负载平衡技术也可以考虑地理定位等。

我已经把范围改变到了任何重要的网站,而不仅仅是政府。仅仅使用散列函数是不够的,仅仅添加一个盐对提高安全性没有多大帮助。取而代之的是,在HMAC上随机添加盐,持续约100毫秒,并将盐与散列一起保存。使用诸如
PBKDF2
Rfc2898DeriveBytes
password\u hash
Bcrypt
等函数和类似函数。重点是让攻击者花费大量时间通过暴力手段查找密码。我不确定,但通常他们使用您描述的两种机制。复制(通过多个实例复制数据)和备份。两者都依赖于您使用的数据库,因此对此没有单一的答案,但大多数数据库引擎都实现了这些。如果您想自己使用这些工具,请查看如何为特定的数据库引擎设置复制和备份。