安全问题答案应该被哈希吗?

8

我正在为一个Web应用程序的管理部分开发安全系统。如果管理员想要在应用程序中进行重要更改,他将需要回答一个安全问题。

我的问题是:这个问题的答案应该在数据库中进行哈希处理吗?

此外,我考虑为管理员提供更改其问题/答案的可能性,但只有在确认其身份使用密码后,管理员才能这样做。这是一个好方法吗?


1
为什么不让他们再次输入密码呢? - Jared Farrish
@Nishant是用于管理员部分的,用于特定操作:编辑、删除等。 - morandi3
2
秘密问题的问题在于它们通常是你在第一次约会时告诉某人的事情。一个辅助PIN码会更好。 - horatio
如果有人在街上询问你最喜欢的颜色和你开过的第一辆车,你可能不会觉得这些信息有潜在的危害性,但这是我银行强制要求我选择的两个“密保问题”之一。我喜欢用与问题完全无关的答案来回答,但这只是我的个人偏好,比如紫色猴子洗碗机。 - horatio
正确的,这当然取决于实现方式。对于我的银行:他们可能会在电话中询问这个问题,在这种情况下,部分匹配与完全匹配相同。对于三次错误就退出的规则,我有很大的机会猜中你的f150,但对于我的猫jiggles,我几乎可以保证。 - horatio
显示剩余7条评论
2个回答

10

是的,但在进行哈希之前一定要对其进行规范化处理 - 转换为小写字母,考虑删除所有非字母数字字符等。如果我输入“ceejayoz”作为我的问题,它应该也能接受“CE EJAYOZ”。


2
+1 用于规范化。通常我自己做这件事,但通过编程实现是很好的建议! - Jim
2
每当被问到安全问题时,我总是有点紧张,会想:“我在那上面放了名字/姓氏吗?” - Jared Farrish
@ceejayoz 使用strtolower()函数来进行规范化是否足够? - morandi3
这取决于问题。至少我会加上 trim()。如果你要求母亲的姓氏,那么这两个可能就足够了。如果你要求街道名称,你可能需要删除常见的东西,如“Rd.”,“Rd”,“Road”等,这样他们就不必记住使用了哪个变体。 - ceejayoz
@ceejayoz 我在考虑给管理员编辑他们的问题的可能性,但这有点“危险”,因为他们可以添加愚蠢和简单的问题?! - morandi3
显示剩余3条评论

4

在我看来,哈希是一个很好的想法。因为除了原始用户之外,没有人真正需要知道它,所以最好将其保持更多的“秘密”,不让别有用心的人窥探。

至于更改哈希的能力,这也是一个很好的想法,要求他/她输入密码来更改哈希是另一种很好的安全方法。

我认为你的想法是正确的。


我在考虑在哈希/检查之前使用strtolower吗? - morandi3
是的,看看ceejayoz的回答,这是一个很好的安全问题实践,因为大多数人永远不记得他们用过什么确切的大小写等。 - Jim
同时添加修剪和折叠所有空格。哈希密码而将“安全问题和答案”轻易地消化掉是没有意义的。 - blakroku

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接