【发布时间】:2014-07-27 13:52:38
【问题描述】:
我现在在几个地方做了一些工作,密码在数据库中被加盐和散列,但安全问题的答案以纯文本形式存储。刚才我为我的水电公司注册了在线门户,在账户管理部分,安全问题和答案显示给我。
鉴于安全问题和答案通常允许用户以变通方式访问帐户,而无需密码,为什么允许以纯文本形式存储它们?尤其是由于人们通常只有有限的安全问题可供选择,因此他们很可能在许多网站上使用相同的答案。
【问题讨论】:
我现在在几个地方做了一些工作,密码在数据库中被加盐和散列,但安全问题的答案以纯文本形式存储。刚才我为我的水电公司注册了在线门户,在账户管理部分,安全问题和答案显示给我。
鉴于安全问题和答案通常允许用户以变通方式访问帐户,而无需密码,为什么允许以纯文本形式存储它们?尤其是由于人们通常只有有限的安全问题可供选择,因此他们很可能在许多网站上使用相同的答案。
【问题讨论】:
安全问题的问题在于它们在设计上完全不安全。它们以纯文本形式存储的原因是它们有时需要被人类查看并被人类用来验证答案是否正确。如果用户对他们最喜欢的食物的回答是“爆米花”,而他们的回答是“爆米花”,那么这是一个有效的答案。
对安全问题的答案进行散列处理将要求用户准确知道他们之前的答案,就像密码一样,并且我们已经知道用户忘记了他们的密码(在那些情况下,用户是试图访问该帐户的人)。安全问题的重点是它们是可以记住的真实事物,用户不必将其视为密码。
同样,因为这些不是像密码那样任意的答案,所以正如您所注意到的,它们有时会显示给用户。这样他们就可以在答案不再正确时更改答案。密码是任意响应,但安全问题的答案不是任意的。人们的最爱,甚至他们认为激发他们灵感的事物或人,都会随着时间而改变。被问及最喜欢的电影的用户可能会选择他们昨晚看过的电影,一年后完全忘记他们曾经对它给予如此高的评价。
就此而言,对安全问题的答案进行散列处理的用处有限(主要适用于知道随机回答问题的安全极客)。他们的本质是他们是公开的。散列用户最新汽车的型号并不能阻止黑客仅仅阅读他们的 Facebook 提要。
安全问题的安全答案是不要使用它们。从技术上讲,它们应该完全像密码一样对待,因为实际上它们是密码。但是,如果我们对安全问题的答案进行哈希处理,要求用户选择强答案,并且不允许他们使用容易猜到的答案,那么它们就没有意义了。
请记住,安全问题和答案的目的是绕过不知道密码的情况。它们越是被当作密码对待,它们对那个目的就越无用。
【讨论】:
对于“为什么不需要安全地存储答案?”没有答案,因为它们应该。
密码实际上也是一个安全问题的答案(“你的密码是什么?”),所以你 should always hash answers to security questions 也是一种授权用户的方式。
【讨论】: