【问题标题】:Correct logic to use when implementing 2fa on my site?在我的网站上实施 2fa 时使用的正确逻辑?
【发布时间】:2019-11-20 23:29:55
【问题描述】:

我正在使用“sonata-project/google-authenticator”库。它允许我生成如下二维码:

$g = new \Google\Authenticator\GoogleAuthenticator();
$salt = 'XJDDJKSLJNASDJNASDASDASD';
$secret = $uid.$salt;
$url = $g->getURL($uid, 'coinula.com', $secret);

我的问题是:

  1. 我提供的秘密,就是这些家伙向用户展示的秘密吗?那么这个秘密就是“全局”密钥,而二维码只是这个代码的图片版本?
  2. 我是否应该存储秘密并将其安全地放在我身边?或者是用户应该能够写下并决定是否要保留它的东西。 IE。对我来说,秘密的目的是不是为了存储它?或者有什么理由我必须保存它?

【问题讨论】:

  • 秘密,无论它在用户和服务器之间如何共享,都是 TOTP 算法的关键加密组件。它需要每个用户都是唯一的,理想情况下与用户的已知信息不直接相关(例如随机)。 GA 应用程序根据算法、位数和时间间隔(对于 GA,始终为 6 和 30 秒)计算代码,您的服务器必须生成并与之进行比较(使用密钥、数字和时间间隔)

标签: two-factor-authentication


【解决方案1】:

原来是个愚蠢的问题,但我还是会回答。必须存储该密钥,以便您将其与用户匹配。如果你能指定你自己的秘密会更好。我想可能有办法,但我会继续这样做。所以我将使用生成的秘密并将其存储在数据库中以进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多