为了账号安全,请及时绑定邮箱和手机立即绑定

在数据库中存储密码的首选方法

在数据库中存储密码的首选方法

慕哥6287543 2019-09-20 16:25:24
在数据库中存储密码的首选方法/数据类型是什么(最好是SQL Server 2005)。我在几个应用程序中一直使用的方法是首先使用.NET加密库,然后将它们作为二进制文件存储在数据库中(16)。这是首选方法还是我应该使用不同的数据类型或分配比16更多的空间?
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

我将密码的salted哈希等价物存储在数据库中,而不是密码本身,然后始终将哈希值与生成的用户传入的哈希值进行比较。

将文字密码数据存储在任何地方都太危险了。这使得恢复成为不可能,但是当有人忘记或丢失密码时,您可以执行一些检查并创建新密码。


查看完整回答
反对 回复 2019-09-20
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

  1. 存储salted-password的哈希值,例如bcrypt(nounce + pwd)。您可能更喜欢bcrypt而不是SHA1或MD5,因为它可以调整为CPU密集型,因此可以更长时间地进行暴力攻击。

  2. 在几次登录错误后向登录表单添加验证码(以避免暴力攻击)

  3. 如果您的应用程序有“忘记密码”链接,请确保它不通过电子邮件发送新密码,而是应该发送一个链接到(安全)页面,允许用户定义新密码(可能只有在确认后)一些个人信息,例如用户的出生日期。此外,如果您的应用程序允许用户定义新密码,请确保您要求用户确认当前密码。

  4. 显然,保护登录表单(通常使用HTTPS)和服务器本身

通过这些措施,您的用户密码将得到相当好的保护:

  1. =>离线字典攻击

  2. =>实时字典攻击

  3. =>拒绝服务攻击

  4. =>各种各样的攻击!


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 577 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信