我正在为我的一个副业项目实现双因素身份验证系统,并希望建立一些“一次性代码”,就像 Google 为他们的双因素身份验证所做的那样。
我的问题是,将这些代码存储在服务器上最安全的方法是什么?他们需要在数据库中加密吗?我会使用像 bcrypt 这样的东西来让它们像我散列密码一样吗?我认为这可能有点矫枉过正,因为攻击者会知道每个散列代表一个 6 位数字,这会使暴力破解时间几乎为零。
最佳答案
将您的一次性代码 (OTC) 视为密码。现在使用安全最佳实践来管理密码。
此外,您不应使用 6 位数字作为 OTC。就像我说的,这些是(等同于)密码,您不希望这些密码很弱。
请引用Password Storage Cheat Sheet有关如何安全存储密码的更多信息。
关于database - 为双因素身份验证存储 "backup codes"的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095681/