Когда код двухфакторной авторизации всегда считается неверным, пользователь знает пароль, но не может пройти второй шаг входа.
Здесь важно не отключать безопасность вслепую. Нужно восстановить доступ и одновременно сохранить защиту аккаунтов.
Коротко: нужно проверить время сервера, TOTP-секрет, генерацию QR, окно допустимого кода и привязку к пользователю.Почему это ломается
Код всегда неверный из-за рассинхрона времени, неправильного base32-секрета, битого QR-кода, слишком узкого окна проверки, привязки секрета к другому пользователю, повторного использования кода или ошибки после переноса базы.
Что проверяю первым
- синхронизировано ли время сервера
- совпадает ли секрет пользователя
- правильно ли генерируется QR-код
- какое окно проверки TOTP используется
- не перепутаны ли пользователи или устройства
Как проходит исправление
Я проверяю 2FA на тестовом пользователе и отдельно смотрю безопасный сценарий восстановления доступа для реального пользователя.
- синхронизирую время сервера
- исправляю хранение и чтение TOTP-секрета
- чиню генерацию QR-кода
- настраиваю допустимое окно проверки
- добавляю безопасный сброс 2FA
Что подготовить
- тип 2FA
- пример ошибки
- доступ к коду или админке
- информацию о переносе или обновлении
- правила восстановления доступа
Какой результат нужен
Правильный код должен приниматься в допустимом временном окне, а неверные и повторные коды должны отклоняться.
Чего лучше не делать
Не отключайте 2FA всем пользователям без аудита. Лучше сделать точечное восстановление и исправить причину.
Вопросы и ответы
Почему код меняется, но сайт не принимает ни один?
Чаще всего время сервера или секрет не совпадают с приложением.
Можно ли расширить окно проверки?
Можно аккуратно, но слишком широкое окно снижает безопасность.
Что делать при потере телефона?
Нужен безопасный сценарий сброса 2FA с подтверждением владельца.
Нужны ли резервные коды?
Да, они помогают восстановить доступ без отключения защиты всем подряд.
Нужна похожая задача?
Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот или лог ошибки, и я подскажу, с чего безопасно начать исправление.
Итог
2FA нужно чинить без ослабления защиты: время, секрет, QR и восстановление доступа должны быть выстроены аккуратно.