0

我一直在阅读 OWASP 10 并且遇到了存储信息的最佳实践。盐渍哈希。您为每个密码生成一个随机盐并将其组合并散列并存储它。我的疑问是,如果盐是随机生成的,当用户键入密码时如何验证密码?盐是否与用户名一起保存?如果是这样,这种做法仍然是脆弱的。或者他们是怎么做到的?

4

1 回答 1

0

盐与用户名一起保存。盐不是秘密。加盐的目的是确保如果两个人有相同的密码,他们不会有相同的散列密码。这可以防止预先计算的哈希攻击(彩虹表),并防止泄露数据库中的两个用户具有相同的密码。

虽然每个用户的随机盐是理想的,但加盐的好处也可以通过确定性但独特的盐来实现。例如,您可以为您的数据库使用一些固定字符串,并将其与用户 ID ( com.example.mygreatsystem:user1@example.com) 连接起来,并将其用作盐。由于它对每个用户都是唯一的(不仅在这个系统内,而且在全球范围内),它实现了与随机盐相同的目标,而不需要额外的数据库查找。与随机盐一样,该方案不需要保密。盐的重要部分是它是独一无二的。但在实际情况下,与用户记录一起存储的足够长度(通常为 8 个随机字节)的每个用户随机盐是最佳实践。

于 2020-09-16T16:14:52.430 回答