我遵循这里解释的相同方法。
我正在使用PHPGanga_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************&size=200x200&ecc=M" alt="Loading....">
实际应用程序的秘密是:XOB*************,所以它不会在URL中暴露实际的秘密。但是这个网址可以不被恶意使用吗?
我想知道:
- 如果我不应该使用URL下载二维码,而不是将其与PHPGansta库生成的URL一起显示
- 如果api.qrserver.com不是安全威胁,因为我的意思是,他们是谁?我正在向他们发送通过2fa身份验证所需的所有详细信息。因此,api.qrserver.com的漏洞对我来说将是非常糟糕的。或者api.qrserver.com=谷歌,因此可以吗
这样一来,即使URL中没有出现文字秘密,QR码也足以生成有效的2FA码。
是的,你正在把这个代码发送给第三方。我强烈建议不要这样做。
此外,您正在使用一个名为PHPGangta的库,该库自2016年以来一直没有更新。所有这些都不能建立信任。