Dav*_*ell 5 c# database passwords hash
我一直在讨论如何将密码存储在我的数据库中一段时间的问题.这是我第一次使用Web登录创建安全的应用程序,所以我想设置一些好的做法.
首先,我读了哈希和盐腌.似乎这个想法是......
这让我想到了......如果一个黑客知道你的盐(因为它存储在某个地方的数据库中,可能是一个名为this_is_not_the_salt_ur_looking_for或者同样含糊不清的列),他们可以重新生成密码字典并获得访问权限.
然后我有了一个主意.如果你存储在您的盐中的散列密码字段.所以按照步骤1-4(随机生成盐),然后在步骤5中,将盐插入密码解释类或服务已知的密码中:
xxxxxsaltvaluexxxxxxxxxxxxxxxx
其中x是散列字符串值.任何人都可以看到这个问题吗?它完全没必要吗?
答:
没有理由不这样做.正如Yahia所述,其他保护密码的方法包括双(或n)散列.另一方面,BCrypt看起来几乎完全是一种阻止暴力攻击的好方法,但是我找不到一个可靠的C#库
谢谢!
TTD
从安全的角度来看,只要你只存储哈希密码(不要存储明文密码!)加上盐......攻击者"被允许"知道盐 - 你的安全必须以一种方式设计即使有了盐的知识,它仍然是安全的.
盐有什么作用?
Salt使用预先计算的"彩虹表"帮助抵御暴力攻击.
对于攻击者来说,盐使蛮力更加昂贵(在时间/内存方面).
计算这样一个表是很昂贵的,通常只有当它可以用于多个攻击/密码时才会这样做.
如果您对所有密码使用相同的盐,则攻击者可以预先计算此类表,然后将密码暴力强制为明文...
只要您为每个密码生成一个新的(最好的密码强)随机盐存储哈希没有问题.
至于你在"掩饰"盐的想法
更多的是"默默无闻的安全",应该避免.
虽然在这种情况下我既没有看到任何积极或消极的影响.
如果你想进一步加强安全性
你可以多次计算哈希值(散列哈希等) - 这不会花费你太多但是它使得暴力攻击/计算"彩虹表"更加昂贵. ..请不要发明自己 - 有经过验证的标准方法,例如http://en.wikipedia.org/wiki/PBKDF2和http://msdn.microsoft.com/en-us/library /system.security.cryptography.rfc2898derivebytes.aspx
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |