Безопасен ли этот подход 2FA?

Я следую тому же подходу, который описан здесь.

Я использую https://github.com/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-адресе. Но разве нельзя использовать этот URL злонамеренно?

Мне интересно:

  1. если мне, возможно, не следует использовать URL-адрес для загрузки QR-кода вместо отображения его с URL-адресом, который генерирует библиотека PHPGansta?
  2. если api.qrserver.com не представляет угрозы безопасности, я имею в виду, кто они? Я отправляю им всю информацию, необходимую для прохождения аутентификации 2fa. Так что взлом api.qrserver.com был бы очень плохим для меня. Или api.qrserver.com = google, значит, все в порядке?

1 ответ

Да, вы не ошиблись... идея кажется ужасной.

Таким образом, даже если буквальный секрет не отображается в URL-адресе, QR-кода достаточно для генерации действительных кодов 2FA.

И да, вы отправляете этот код третьей стороне. Я бы настоятельно не советовал этого делать.

Также вы используете библиотеку под названием PHPGangsta, и она не обновлялась с 2016 года. Ничего из этого не вызывает доверия.

Другие вопросы по тегам