首页 > 解决方案 > 这种 2FA 方法是否安全?

问题描述

我遵循此处解释的相同方法。

我正在使用PHPGangsta_GoogleAuthenticator,如下所示:

$ga = new \PHPGangsta_GoogleAuthenticator();
$qrCodeUrl = $ga->getQRCodeGoogleUrl(urlencode('trading.com/'.$user->email), $user->two_fa_secret);

如果用户的电子邮件地址 = someguy@mysite.com,则应用程序将显示“trading.com/someguy@mysite.com”。第二个参数是用于生成代码的实际秘密。

令我烦恼的是,它会生成以下内容:

<img src="https://api.qrserver.com/v1/create-qr-code/?data=otpauth%3A%2F%2Ftotp%2Ftrading.com%252Fsomeguy%2540mysite.com%3Fsecret%3D4UYJ************&amp;size=200x200&amp;ecc=M" alt="Loading....">

实际应用程序的秘密是:XOB*************,因此它不会在 URL 中公开实际秘密。但是这个网址不能被恶意使用吗?

我想知道:

  1. 如果我不应该使用 URL 来下载 QR 码,而不是使用 PHPGansta 库生成的 URL 来显示它?
  2. 如果 api.qrserver.com 不是安全威胁,因为我的意思是,他们是谁?我正在向他们发送通过 2fa 身份验证所需的所有详细信息。所以 api.qrserver.com 的漏洞对我来说是非常糟糕的。或者是 api.qrserver.com = google,因此可以吗?

标签: phpgoogle-2fa

解决方案


是的,你没有错……这似乎是个糟糕的主意。

这样一来,即使文字秘密没有出现在 URL 中,QR 码也足以生成有效的 2FA 码。

是的,您正在将此代码发送给第三方。我强烈建议不要这样做。

此外,您正在使用一个名为 PHPGangsta 的库,它自 2016 年以来一直没有更新。这些都不会产生信任。


推荐阅读