想知道在存储用户信息(如密码和什么)时,将用户名哈希存储在数据库中是否是一种好的做法。将密码和信息存储在数据库中时用户名应该散列吗?
回答
加密/散列用户名是一种矫枉过正的行为。如果你担心安全,只需使用SHA256与随机salt哈希。
加密用户名没有意义,因为您可能基于userName,部分userName进行搜索。加密只会让搜索变得困难。
好吧,我的整个生活中,我一直在使用SHA256与盐认为它是最强大的。 Rein Henrichs对此帖的好评如下:SHA256 may not be the safest。你可能想要使用bcrypt,但我想这很慢。我会做一些概念验证,如果速度很慢,那么我会留下SAH256 +散列。
感谢您的链接。
没有必要。只需使用哈希函数来设计暴力破解,就像bcrypt一样。 SHA不足。
我同意你不应该散列用户名,但我也不建议存储“加密”密码。始终使用安全的1路散列哈希密码。我总是怀疑那些允许我取回密码的网站,而不是强制重置,因为这意味着某些管理员可以解密我的密码。 – squawknull 2011-04-14 04:38:53
@squaknull对不起,哈希是我的意思。将解决我的答案。 – alex 2011-04-14 04:46:10
千万不要以明文形式存储密码。但你不需要散列用户名。
但我想你会使用这个用户信息的某些服务器来允许客户端登录。如果密码未从客户端传输到服务器,则安全。在这种情况下,您可以使用某种单向散列来输入密码。如果您的客户端和服务器都知道散列函数,则您的密码永远不需要通过线路连接。但是如果你想改变散列机制,就会出现问题。您的客户端和服务器都需要更新。在这种情况下,客户端必须协商使用哪种机制服务器。你最终会做一种spnego机制;)
- 1. 散列密码时,我应该将散列函数名称存储在数据库中吗?
- 2. 2FA密码应该散列存储吗?
- 3. 使用MD5和密码散列函数在数据库中存储时
- 4. 当散列不适用时将密码存储在数据库中
- 5. 将信用卡信息临时存储在数据库中
- 6. 我应该使用base64编码在数据库表中存储密码吗?
- 7. 如何在数据库中存储盐渍散列密码
- 8. 我可以在azure密钥保管库中存储用户名和密码的详细信息吗?
- 9. 将选定的用户信息存储在数据库中
- 10. 在将数据存储到数据库之前,我应该过滤用户密码吗?
- 11. 如何最好地存储用户信息和用户登录名和密码
- 12. 在将用户名和密码插入数据库时出错
- 13. 在数据库中散列密码
- 14. 将密码存储为散列值时检索密码
- 15. 我应该存储关于数据库中的数字记录的信息吗?
- 16. 在数据库中存储用户密码/数据
- 17. 将信用卡信息存储在数据库中
- 18. 密码salt应该存储在数据库的自己的字段中吗?
- 19. 在哪里存储用户的信息(个人信息,用户名和密码)在visual basic?
- 20. 在MySQL中存储散列密码
- 21. 我应该如何管理用户名/密码会话信息?
- 22. Java数据库用户名和密码
- 23. 在数据库中存储OpenID信息
- 24. 在数据库中存储EXIF信息
- 25. 用于存储用户/密码和其他信息的服务
- 26. 加密的信用卡信息,并将其存储在数据库
- 27. 数据库:存储税率和信息
- 28. 在java中加密数据库用户名和密码?
- 29. 我应该在其数据库中存储其他实体的用户特定信息吗?
- 30. 在iPhone/Android上的数据库中存储机密信息
SHA不是一个足够复杂的哈希函数,可以防止强力攻击。见http://codahale.com/how-to-safely-store-a-password/ – 2011-04-14 04:47:08
谢谢!我想尽可能多,但我只是想,它不会要求 – mcbeav 2011-04-14 04:49:00
@all更新的答案。 – Nishant 2011-04-14 04:52:22