我的密码使用sha512,但秘密问题和答案都是纯文本。问题是:我需要散列秘密答案吗?如果是这样的数据类型,它仍然是char(128)?我认为秘密问题必须是纯文本吗?
答案 0 :(得分:5)
只是摆脱秘密问题,他们是毫无意义的措施:
答案 1 :(得分:3)
你也不应该哈希。如果用户想通过问题/答案重置密码,则应发送一封包含相关链接的电子邮件。如果攻击者设法得到问题/答案,除非他们已经访问了用户的电子邮件,否则它仍然无法帮助他们,这意味着所有的赌注已经相当多了。如果你愿意,你可以散列答案,并且它们将以与密码相同的方式存储,因为它们以相同的格式结束。
但有一个问题是,用户输入自己的问题还是从列表中选择?如果从列表中,为什么不使用一个标识符来使用哪个问题,并将潜在问题放在另一个表中或硬编码到脚本中?
答案 2 :(得分:1)
这是一篇很老的帖子,但我想对nico的答案添加一些想法(我太新了,无法添加评论)。当用户不再能够访问他们注册的电子邮件地址时(经常发生),安全问题非常有用。您需要一些其他方式来识别它们,否则它们将永远无法返回到他们的帐户。
您可以通过规范化输入(小写,修剪前导/尾随空格等)来降低错误输入的风险。
回到OP,如果你仍然使用它们,不哈希它们的一个原因恰好是尼科的第二点 - 如果答案是“圣云”并且人物类型为“St Cloud”,写得不好的系统可能会拒绝重置。但是如果答案没有经过哈希处理,管理员会发现答案显然是正确的。如果答案被散列,则无法知道用户是否接近。