(转译)如何在数据库中安全存储密码以及如何验证密码?
作者:Alex Xu
网址:twitter.com/alexxubyte/status/1521883407864590337
如何在数据库中安全存储密码以及如何验证密码?让我们来看看。
以下事不能做:
1. 以纯文本存储密码不是一个好主意,因为任何有内部访问权限的人都可以看到它们。
图片
2. 直接存储密码哈希值是不够的,因为它会被预先计算的攻击所修剪,例如彩虹表。
为了减轻预计算攻击,我们要对密码加盐(Salt)。
什么是密码盐(Salt)?
根据OWASP指南,”密码盐是一个独特的、随机生成的字符串,作为散列过程的一部分被添加到每个密码中"。
如何存储密码盐(Salt)?
盐不意味着是秘密的,它可以以纯文本形式存储在数据库中。它用于确保哈希结果对每个密码都是唯一的。
密码可以用以下格式存储在数据库中。𝘩𝘢𝘴𝘩( 𝘱𝘢𝘴𝘴𝘸𝘰𝘳𝘥 + 𝘴𝘢𝘭) 。
如何验证密码?
要验证密码,可以经过以下过程。
1. 客户输入密码。
2. 系统从数据库中获取相应的盐。
3. 系统将盐附加到用户输入的密码上,并对其进行散列。让我们把散列值称为H1。
4. 系统比较H1和H2(H2是存储在数据库中的散列值)。如果它们相同,则该密码是有效的。
思考题:我们还可以用什么机制来确保密码安全?
发布于 美国
