宝玉xp 22-05-06 12:58
微博认证:前微软Asp.Net最有价值专家 2025微博年度新知博主 科技博主

(转译)如何在数据库中安全存储密码以及如何验证密码?
作者:Alex Xu
网址:twitter.com/alexxubyte/status/1521883407864590337

如何在数据库中安全存储密码以及如何验证密码?让我们来看看。

以下事不能做:
1. 以纯文本存储密码不是一个好主意,因为任何有内部访问权限的人都可以看到它们。
图片
2. 直接存储密码哈希值是不够的,因为它会被预先计算的攻击所修剪,例如彩虹表。

为了减轻预计算攻击,我们要对密码加盐(Salt)。

什么是密码盐(Salt)?

根据OWASP指南,”密码盐是一个独特的、随机生成的字符串,作为散列过程的一部分被添加到每个密码中"。

如何存储密码盐(Salt)?

盐不意味着是秘密的,它可以以纯文本形式存储在数据库中。它用于确保哈希结果对每个密码都是唯一的。

密码可以用以下格式存储在数据库中。𝘩𝘢𝘴𝘩( 𝘱𝘢𝘴𝘴𝘸𝘰𝘳𝘥 + 𝘴𝘢𝘭) 。

如何验证密码?
要验证密码,可以经过以下过程。
1. 客户输入密码。
2. 系统从数据库中获取相应的盐。
3. 系统将盐附加到用户输入的密码上,并对其进行散列。让我们把散列值称为H1。
4. 系统比较H1和H2(H2是存储在数据库中的散列值)。如果它们相同,则该密码是有效的。

思考题:我们还可以用什么机制来确保密码安全?

发布于 美国