最近,我发现主要的网络托管公司以明文形式存储用户的密码,甚至在尝试验证用户身份时询问用户密码的最后4位数字。这似乎是极其错误和充满安全问题。我相信他们这样做的原因只是帮助识别用户。
答案 0 :(得分:1)
关于#1 - 正确的方法是根本不存储密码。而是存储密码的盐渍哈希。
至于安全地识别用户而不询问他们的密码,这是一个棘手的问题。您可能用于识别它们的任何内容实质上都成为另一个密码(存储问题与第一个相同)。实际上,大多数服务都会使用其他一些个人信息 - 最后4位数字的soc。秒。号码,母亲婚前姓名或“安全问题”。所有这些几乎肯定不如一个好的密码安全。
答案 1 :(得分:1)
1a)不要存储用户的密码,只存储它的(盐渍)哈希值。当用户登录时,哈希他们提供的密码并将其与存档的哈希进行比较。如果您不知道用户的真实密码,则不能危及其安全性。
1b)通过电话安全地识别用户很困难,您所做的努力程度将取决于对帐户的“危险”未经授权的访问方式。我的银行账户要求我从我的家里,工作单位或手机号码(我已提前与他们一起列出)打电话。您可以要求来电者验证您存档的随机选择的帐户信息(如帐号,帐单邮政编码,中间名,出生日期,信用卡号码中的第七位等)。某些基于电话的系统的每用户PIN码与普通密码/ PIN不同。您可以通过短信将呼叫者的一次性密码发送到他们的手机,并要求他们在一段时间内将其输入系统。我见过的一个比较安全的系统使用Verisign's VIP Mobile app来生成一次性密码。 (当然,如果有人偷了你的手机,那也无济于事)
2)我怀疑这些信息是否公开。如果有一个不安全地存储用户帐户信息的公司列表,那么它将成为“请你破解我”列表的两倍,这些公司会受到入侵企图的攻击。</ p>
答案 2 :(得分:0)
您通常根本不想存储密码 - 您存储了盐渍密码的哈希值。当他们想要登录你的盐并哈希他们提供的密码时,将结果与存储的哈希值进行比较。
答案 3 :(得分:0)
解决问题的第一部分:根本不要存储密码。存储密码的哈希值。
为了通过电话识别它们,我可能会让他们先提前验证一个电话号码,然后结合他们可以定义的秘密问题使用它。
很遗憾,许多主机都没有安全存储密码。我没有足够的经验来评论这方面的优秀主持人。