我已经在几个地方完成了一些工作,现在密码在数据库中被加密和散列,但安全问题的答案以纯文本形式存储。刚才,我注册了我的水电公司的在线门户,在帐户管理部分,我会看到安全问题和答案。
鉴于安全问题和答案通常允许用户以变通方式访问帐户,而不需要密码,为什么允许他们以纯文本格式存储?特别是因为人们通常可以选择有限的安全问题,所以他们可能会在许多网站上使用相同的答案。
答案 0 :(得分:4)
安全问题的问题在于它们在设计上完全不安全。它们以纯文本形式存储的原因是它们偶尔需要被人类查看并被人类用来验证答案是否正确。如果用户对他们喜欢的食物的回答是“爆玉米”,并且他们回答“爆米花”,那就是一个有效的答案。
散列安全问题的答案需要用户知道他们之前的答案完全,就好像它是密码一样,并且我们已经知道用户忘记了他们的密码(在那些情况下用户是尝试访问帐户的用户)。安全性问题的关键在于它们是可以记住的真实事物,并且不必被用户视为密码。
同样,因为这些不是密码的任意答案,所以有时候,正如您所注意到的那样,它们会显示给用户。这样他们就可以在不再正确的时候改变答案。密码是任意响应,但安全问题答案不是任意的。人们的最爱,甚至他们认为激励他们的人或者他们可以随着时间而改变。被问到他们最喜欢的电影的用户可能会选择他们昨晚看到的那部电影,并且在一年之后完全忘记他们曾经如此评价它。
就此而言,散列安全问题的答案的效用有限(主要是那些知道随机回答的安全极客)。他们的本质是他们是公开的。散列用户最新车型的模型并不能阻止黑客只是阅读他们的Facebook Feed。
安全问题的安全答案不是使用它们。从技术上讲,它们应该像密码一样对待,因为出于所有实际目的,它们是密码。但是,如果我们对安全问题的答案进行了深入研究,要求用户选择强有力的答案,并且不允许他们使用易于猜测的答案,那么他们就没有意义了。
请记住,安全问题和答案的目的是绕过不知道密码。他们被视为密码越多,他们为此目的就越无用。
答案 1 :(得分:1)
没有答案"为什么答案不需要安全存储?",因为他们应该。
密码实际上也是对安全问题的回答("您的密码是什么?"),因此您should always hash answers to security questions也是一种授权用户的方式。