Когда код двухфакторной авторизации всегда считается неверным, пользователь знает пароль, но не может пройти второй шаг входа.

Здесь важно не отключать безопасность вслепую. Нужно восстановить доступ и одновременно сохранить защиту аккаунтов.

Коротко: нужно проверить время сервера, TOTP-секрет, генерацию QR, окно допустимого кода и привязку к пользователю.

Почему это ломается

Код всегда неверный из-за рассинхрона времени, неправильного base32-секрета, битого QR-кода, слишком узкого окна проверки, привязки секрета к другому пользователю, повторного использования кода или ошибки после переноса базы.

Что проверяю первым

  • синхронизировано ли время сервера
  • совпадает ли секрет пользователя
  • правильно ли генерируется QR-код
  • какое окно проверки TOTP используется
  • не перепутаны ли пользователи или устройства

Как проходит исправление

Я проверяю 2FA на тестовом пользователе и отдельно смотрю безопасный сценарий восстановления доступа для реального пользователя.

  • синхронизирую время сервера
  • исправляю хранение и чтение TOTP-секрета
  • чиню генерацию QR-кода
  • настраиваю допустимое окно проверки
  • добавляю безопасный сброс 2FA

Что подготовить

  • тип 2FA
  • пример ошибки
  • доступ к коду или админке
  • информацию о переносе или обновлении
  • правила восстановления доступа

Какой результат нужен

Правильный код должен приниматься в допустимом временном окне, а неверные и повторные коды должны отклоняться.

Чего лучше не делать

Не отключайте 2FA всем пользователям без аудита. Лучше сделать точечное восстановление и исправить причину.

Вопросы и ответы

Почему код меняется, но сайт не принимает ни один?

Чаще всего время сервера или секрет не совпадают с приложением.

Можно ли расширить окно проверки?

Можно аккуратно, но слишком широкое окно снижает безопасность.

Что делать при потере телефона?

Нужен безопасный сценарий сброса 2FA с подтверждением владельца.

Нужны ли резервные коды?

Да, они помогают восстановить доступ без отключения защиты всем подряд.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот или лог ошибки, и я подскажу, с чего безопасно начать исправление.

Итог

2FA нужно чинить без ослабления защиты: время, секрет, QR и восстановление доступа должны быть выстроены аккуратно.