如何为网络托管安全地存储密码?

时间:2010-06-25 17:41:44

标签: security passwords identity web-hosting plaintext

  

可能重复:
  Encrypting/Hashing plain text passwords in database

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

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

4 个答案:

答案 0 :(得分:1)

关于#1 - 正确的方法是根本不存储密码。而是存储密码的盐渍哈希。

至于安全地识别用户而不询问他们的密码,这是一个棘手的问题。您可能用于识别它们的任何内容实质上都成为另一个密码(存储问题与第一个相同)。实际上,大多数服务都会使用其他一些个人信息 - 最后4位数字的soc。秒。号码,母亲婚前姓名或“安全问题”。所有这些几乎肯定不如一个好的密码安全。

答案 1 :(得分:1)

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

1b)通过电话安全地识别用户很困难,您所做的努力程度将取决于对帐户的“危险”未经授权的访问方式。我的银行账户要求我从我的家里,工作单位或手机号码(我已提前与他们一起列出)打电话。您可以要求来电者验证您存档的随机选择的帐户信息(如帐号,帐单邮政编码,中间名,出生日期,信用卡号码中的第七位等)。某些基于电话的系统的每用户PIN码与普通密码/ PIN不同。您可以通过短信将呼叫者的一次性密码发送到他们的手机,并要求他们在一段时间内将其输入系统。我见过的一个比较安全的系统使用Verisign's VIP Mobile app来生成一次性密码。 (当然,如果有人偷了你的手机,那也无济于事)

2)我怀疑这些信息是否公开。如果有一个不安全地存储用户帐户信息的公司列表,那么它将成为“请你破解我”列表的两倍,这些公司会受到入侵企图的攻击。<​​/ p>

答案 2 :(得分:0)

您通常根本不想存储密码 - 您存储了盐渍密码的哈希值。当他们想要登录你的盐并哈希他们提供的密码时,将结果与存储的哈希值进行比较。

答案 3 :(得分:0)

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

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

很遗憾,许多主机都没有安全存储密码。我没有足够的经验来评论这方面的优秀主持人。