在数据库中存储密码的首选方法/数据类型是什么(最好是SQL Server 2005)。我在几个应用程序中一直使用的方法是首先使用.NET加密库,然后将它们作为二进制文件存储在数据库中(16)。这是首选方法还是我应该使用不同的数据类型或分配比16更多的空间?
3 回答
UYOU
TA贡献1878条经验 获得超4个赞
我将密码的salted哈希等价物存储在数据库中,而不是密码本身,然后始终将哈希值与生成的用户传入的哈希值进行比较。
将文字密码数据存储在任何地方都太危险了。这使得恢复成为不可能,但是当有人忘记或丢失密码时,您可以执行一些检查并创建新密码。
回首忆惘然
TA贡献1847条经验 获得超11个赞
存储salted-password的哈希值,例如bcrypt(nounce + pwd)。您可能更喜欢bcrypt而不是SHA1或MD5,因为它可以调整为CPU密集型,因此可以更长时间地进行暴力攻击。
在几次登录错误后向登录表单添加验证码(以避免暴力攻击)
如果您的应用程序有“忘记密码”链接,请确保它不通过电子邮件发送新密码,而是应该发送一个链接到(安全)页面,允许用户定义新密码(可能只有在确认后)一些个人信息,例如用户的出生日期。此外,如果您的应用程序允许用户定义新密码,请确保您要求用户确认当前密码。
显然,保护登录表单(通常使用HTTPS)和服务器本身
通过这些措施,您的用户密码将得到相当好的保护:
=>离线字典攻击
=>实时字典攻击
=>拒绝服务攻击
=>各种各样的攻击!
- 3 回答
- 0 关注
- 577 浏览
添加回答
举报
0/150
提交
取消