【发布时间】:2019-04-23 06:10:17
【问题描述】:
几小时前我发布了这个:Is storing secret key as a plaintext in SQL a bad move?
我认为我的问题和总结不够清楚。我指的是基于时间的 OTP 的密钥,而不是常规密码。是的,我有 password_hash()-ed 密码,但没有密钥。 Authy 或 Google Authenticator 可以使用生成的密钥每 30 秒显示一次当前 OTP。除非你们告诉我也要散列我的密钥,否则我不明白为什么我的问题是重复的。
关于 Dat 的评论,我看不出 otplib(javascript 库)对我有什么帮助,因为我仍然需要一个不同的随机密钥来绑定不同的个人帐户,除非我对所有帐户都使用相同的密钥帐户。另外,我需要一种方法来记下哪些密钥链接到哪个帐户,因此它回到了我的主要问题,关于如何安全地存储密钥,以便每当帐户尝试使用 OTP 登录时,我都可以验证它。
对于给您带来的麻烦,我深表歉意,并提前感谢您。
【问题讨论】:
-
我不知道您的身份验证工作流程,但是为什么您的 PHP 应用程序甚至需要存储 OTP?通常这将在服务器端生成并返回给调用者。没有必要存储它。
-
我正在关注本教程:youtube.com/watch?v=t49zjBGD75U,稍作修改。另外,我不是在存储 OTP,而是在存储密钥。当密钥添加到谷歌身份验证器或 Authy 时,他们的密钥将每 30 秒显示 6 位 OTP。