我目前正在为正在组合的应用程序进行基本用户身份验证,并且我在安全性方面没有太多经验。
这就是说,我了解将数据库中的(加盐后的)密码哈希盐化/存储为blob(而不是密码(加密或否))的做法(和必要性)。我已经实现了。
通过盐析/散列用户名并将散列存储在数据库中(而不是纯文本(或加密)的用户名),有什么好处吗?令我惊讶的是,这将使确定哪些用户可以使用数据库进行身份验证来访问系统变得更加困难。
由于使某人难以破解用户帐户的密码至关重要,因此增加确定哪些用户可行的难度是否也有意义?
编辑:我使用的某些语言可能不是100%正确的:随时可以纠正:-)
Edit2:我更改了我要指出的第一个要点,即表示哈希哈希值-感谢大家指出我错过了这一点:-)
Edit3:删除了表示我正在加密/解密密码的措辞。我正在使用加盐的哈希并将其存储在数据库中-感谢Scotty指出这一点。
最佳答案
简短答案:最有可能没有。
长答案:您的情况似乎缺少关键字“我的用户名由于...而敏感”,这引发了一个问题:“为什么?保护用户名可以解决的具体,可证明的问题是什么?”
没有这个问题,您所描述的是与安全相关的开发(乃至整个开发)的一个常见陷阱:提出一些想法来保护或混淆系统的某些部分,然后寻找使用它的原因。与软件开发中的其他任何事情一样,您应该避免做除实际需要之外的任何事情,直到出现明显的问题,而这只能通过使用特定的工具才能解决。
额外提示(免费!): salt your password hashes。普通的哈希为far less secure。
关于database - 将加密的用户名哈希存储在数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/694147/