【问题标题】:Should security question answers be hashed?安全问题的答案是否应该被散列?
【发布时间】:2011-08-10 11:14:53
【问题描述】:

我正在为 Web 应用程序的安全系统工作 - 管理部分。如果一位管理员想要对应用程序进行一些重要的更改,他需要回答一个安全问题。

我的问题是:这个问题的答案应该在数据库中散列?

另外,我正在考虑让管理员可以更改他们的问题/答案,但管理员可以这样做,只要他使用密码确认他的身份。这是一个好方法吗?

【问题讨论】:

  • 为什么不让他们再次输入密码?
  • 确保使用正确的散列技术。首先,确保在散列时使用随机盐(也称为随机数)。其次,确保您使用的哈希算法不会被认为是损坏的。这意味着没有 MD5,没有 SHA-1,而且绝对没有更旧的东西。需要考虑的一些哈希是 SHA-256/512、bcrypt/EksBlowfish(同样的)和 Whirlpool。哈希快乐!
  • @Jared 我认为最好避免经常使用密码
  • 人们还在使用安全问题吗?为什么不直接将重置密码链接发送到他们的电子邮件?
  • 秘密问题的问题在于,它们总是你在第一次约会时告诉某人的事情。辅助 PIN 会更好。

标签: php mysql hash md5


【解决方案1】:

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

【讨论】:

  • +1 用于规范化。我通常自己做这件事,但建议以编程方式做!
  • 当被问到安全问题时,我总是有点汗,然后我想,“我把基本/州/姓放在上面了吗?”
  • @ceejayoz 是否足以使用 strtolower() 进行规范化?
  • 取决于问题。至少我也会把trim() 扔进去。如果你要问母亲的姓氏,这两个可能就足够了。如果您要询问街道名称,您可能希望删除常见的东西,如“Rd.”、“Rd”、“Road”等,这样他们就不必记住他们使用的变体。
  • @ceejayoz 我正在考虑让管理员可以编辑他们的问题,但这有点“危险”,因为他们可以添加愚蠢而简单的问题?!​​
【解决方案2】:

在我看来,散列它是一个好主意。由于除了原始用户之外没有人真正需要知道它,因此最好保留更多的“秘密”,以免被窥探。

就更改它的能力而言,这也是一个好主意,并且要求他/她输入密码来更改它是另一种很好的安全方法。

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

【讨论】:

  • 我还在考虑在哈希/检查之前使用 strtolower 吗?!
  • 是的,请参阅 ceejayoz 的回复,这是安全问题的一个很好的做法,因为大多数人都不记得用于它的确切大小写等。
  • 添加修剪和折叠所有空格。散列密码并让“安全问题和答案”易于消化是没有意义的。
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 2014-07-20
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
相关资源
最近更新 更多