1

可能重复:
在数据库中加密/散列纯文本密码

最近,我发现主要的网络托管公司以明文形式存储其用户的密码,甚至在尝试验证其身份时要求提供用户密码的最后 4 位数字。这似乎是非常错误的并且充满了安全问题。我相信他们这样做的原因只是为了帮助识别用户。

  1. 安全存储用户密码的正确方法是什么?在不询问密码(例如通过电话)的情况下,安全可靠地识别用户的正确方法是什么?
  2. 谷歌搜索了一下,似乎有很多人抱怨几个流行的网络托管服务提供商使用明文方法。许多网络托管服务提供商使用这种明文存储密码的方法真的是真的吗?有哪些流行的网络主机可以安全地存储用户的个人信息?
4

4 回答 4

1

关于#1 - 正确的做法是根本不存储密码。相反,存储密码的加盐哈希。

至于在不询问密码的情况下安全地识别用户,这是一个棘手的问题。本质上,您可能用来识别它们的任何东西都会变成另一个密码(与第一个密码具有相同的存储问题)。实际上,大多数服务会使用其他一些个人信息——soc 的最后 4 位。秒。号码、母亲的娘家姓或“安全问题”。不过,几乎可以肯定,所有这些都不如一个好的密码安全。

于 2010-06-25T17:50:06.897 回答
1

1a)不要存储用户的密码,只存储它的(加盐的)哈希值。当用户登录时,对他们提供的密码进行哈希处理,并将其与您存档的哈希值进行比较。如果您不知道用户的真实密码,就不能危及其安全性。

1b) It's difficult to securely identify a user over the phone, and the level of effort you'll make will depend on how "dangerous" unauthorized access to the account would be. My bank accounts require me to call from my home, work, or cell numbers (which I have listed with them in advance). You can ask the caller to verify randomly-selected pieces of account information that you have on file (like account number, billing zipcode, middle initial, date of birth, the seventh digit in the credit card number, etc). Some phone-based systems have a per-user PIN number that is different from the normal password/PIN. You can send the caller a one-time passcode to their mobile phone via text message, and require them to enter it into the system within some time limit. One of the more secure systems I've seen uses Verisign 的 VIP 移动应用程序可生成一次性密码。(当然如果有人偷了你的手机,那也没多大用处)

2)我怀疑信息是公开的。如果有一个不安全地存储用户帐户信息的公司列表,它会兼作“请黑我”列表,这些公司会受到入侵企图的抨击。

于 2010-06-25T17:59:57.950 回答
0

您通常根本不想存储密码——您存储了加盐密码的哈希值。当他们想要登录时,对他们提供的密码进行加盐和哈希处理,并将结果与​​存储的哈希值进行比较。

于 2010-06-25T17:47:59.570 回答
0

解决您问题的第一部分:根本不要存储密码。存储密码的哈希值,加盐。

为了通过电话识别他们,我可能会让他们首先提前验证电话号码,然后将其与他们可以定义的秘密问题结合使用。

遗憾的是,许多主机没有安全地存储密码。我没有足够的经验来评论这方面的好房东。

于 2010-06-25T17:48:21.393 回答