gpt4 book ai didi

sql-server-2008 - 在 SQL Server 中存储密码

转载 作者:行者123 更新时间:2023-12-03 06:24:25 25 4
gpt4 key购买 nike

在 SQL Server 2008 中存储用户密码的建议做法是什么?

我正在存储 Intranet 的用户详细信息,并且希望获得有关存储用户详细信息(例如名称、密码和用户访问权限等)的最佳方式的建议。我正在考虑创建一个 nvarchar 列,然后加密此文本在插入表之前。

最佳答案

存储密码的常用方法是对密码使用哈希函数,但 salt事先。对密码进行“加盐”很重要,以防御 rainbow table攻击。

所以你的表格应该看起来像这样

._______._________________.______________.
|user_id|hash |salt |
|-------|-----------------|--------------|
|12 |adsgasdg@g4wea...|13%!#tQ!#3t...|
| |... |... |

在检查给定密码是否与用户匹配时,您应该将盐连接到给定密码,并计算结果字符串的哈希函数。如果哈希函数输出与 hash 列匹配 - 它就是正确的密码。

然而,重要的是要理解盐散列想法有一个特定的原因——防止任何有权访问数据库的人知道任何人的密码(反转散列函数输出被认为是困难的问题)。例如,银行的 DBA 无法登录您的银行帐户,即使他有权访问所有列。

如果您认为您的用户会使用敏感密码(例如 Gmail 帐户的密码)作为您网站的密码,您也应该考虑使用它。

恕我直言,这并不总是需要的安全功能。所以你应该考虑一下你是否想要它。

参见this article对此机制进行了很​​好的总结。

更新:值得一提的是,为了针对逆转个人密码哈希的针对性攻击提供额外的安全性,您应该 use bcrypt ,这可能很难计算。 (但是除非你真的害怕神秘的黑衣人针对你的特定数据库,否则我认为 sha1 已经足够好了。我不会为了额外的安全性而为我的项目引入另一个依赖项。也就是说,没有理由不使用 sha1 100 次,会产生类似的效果)。

关于sql-server-2008 - 在 SQL Server 中存储密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/876342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com