Как внедрить двухфакторную аутентификацию на своём сайте

Двухфакторная аутентификация усиливает защиту учётной записи: для входа нужны пароль и независимое подтверждение, например код из приложения. Такой подход снижает риск взлома через украденный пароль, что особенно важно для личного кабинета, панели администратора и платёжных функций.

До запуска определите, где второй фактор обязателен, как пользователи будут его получать и что произойдёт при потере устройства. Начните с небольшой группы, проверьте сценарии восстановления и только затем расширяйте защиту на все чувствительные аккаунты.

Оценить риски и выбрать область защиты

Разделите аккаунты по уровню доступа. Обязательный 2FA обычно нужен администраторам, сотрудникам с доступом к клиентским данным и пользователям, управляющим финансами. Для остальных категорий подтверждение можно включать по риску, при смене устройства, сети или места входа.

Определите реальные угрозы: перехват пароля, фишинг, подбор кода, клонирование SIM-карты и доступ к почте. Если аккаунт восстанавливается через электронную почту, второй фактор должен быть привязан к отдельному устройству или аппаратному ключу, иначе компрометация почты обходит всю схему.

Выбрать второй фактор

TOTP-код генерируется приложением или аппаратным токеном и остаётся пригодным короткое время. Он не зависит от сети оператора и обычно удобнее SMS, но пользователю нужно установить приложение и сохранить восстановительные коды. На сервере для администраторов можно отдельно изучить модули PAM: они показывают, как факторы связываются с политиками доступа.

Подтверждение через уведомление в приложении удобно: пользователь разрешает вход на телефоне, а сервер проверяет подпись запроса. WebAuthn и аппаратные ключи дают более сильную привязку к устройству, но требуют поддержки браузера и сервера, а также запасного ключа. SMS стоит оставить только как резервный вариант из-за риска подмены номера и перехвата сообщения.

Подготовить пользователей и восстановление

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

Заведите одноразовые коды восстановления, храните их в зашифрованном виде и разрешите использовать каждый код лишь один раз. Установите правило для замены телефона: проверка старого устройства, обращение в поддержку с дополнительными документами или одобрение нескольких администраторов. Это снижает шанс злоумышленника захватить учётную запись через процедуру сброса.

Проверьте также домен и инфраструктуру: изменение DNS-записей, правил перенаправления или сертификата способно перенаправить пользователя на поддельную страницу. В материале о влиянии DNS объясняется роль этих настроек. Уведомления о смене параметров домена стоит получать тому, кто отвечает за безопасность.

Метод Что получает пользователь Сильная сторона Что учитывать
TOTP-код Код из приложения Не зависит от оператора Нужны приложение и резервные коды
Уведомление в приложении Запрос подтверждения Удобная проверка входа Нужна связь с сервером уведомлений
WebAuthn или аппаратный ключ Подтверждение устройством Сильная защита от фишинга Требуется запасной способ входа
SMS-код Сообщение с кодом Знакомый пользователям сценарий Риск подмены номера и перехвата

Интегрировать проверку в сайт

Подключите готового поставщика 2FA или реализуйте проверку через WebAuthn, TOTP либо уведомления в приложении. Сервер должен проверять подпись, срок действия, счётчик попыток и соответствие зарегистрированному устройству. Секрет пользователя и ключи сервера храните отдельно от данных профиля.

Защитите служебные маршруты: ограничьте частоту запросов, блокируйте перебор и не записывайте коды в журналы. После успешного входа обновляйте сессию, а при чувствительных действиях, например смене пароля, запрашивайте повторное подтверждение. Так 2FA защищает вход и опасные операции внутри учётной записи.

Проверить безопасность и качество

Проводите регулярные проверки: попытки включить 2FA для чужого аккаунта, смену номера телефона, восстановление после потери обоих устройств и обход через доверенный браузер. Сверяйте настройки с актуальной схемой угроз и удаляйте устаревшие устройства. Полезную базу для внутреннего обучения можно собрать из материалов о технологиях, дополняя её внутренним регламентом.

Измеряйте долю аккаунтов с включённой защитой, число неуспешных проверок, обращения в поддержку и время восстановления доступа. Эти показатели показывают реальный охват 2FA и помогают найти неудобные сценарии. Отдельно проверяйте, не превращается ли обязательное подтверждение причиной массовых отказов при входе.

Сопровождать защиту после запуска

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

Планируйте пересмотр правил при появлении новых устройств и методов входа. Переведите критичные аккаунты на аппаратные ключи или WebAuthn, если сценарий совместим с аудиторией, и оставьте резервный путь восстановления. Регулярная проверка настроек должна быть частью управления рисками, а не разовой задачей.

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