Проблема с одним только SMS
У SMS-OTP есть реальные слабости: он уязвим к атакам SIM-swap и перехвату, зависит от best-effort доставки операторов и стоит денег на каждой отправке, растущих с масштабом. Для низкорисковой удобности он подходит; для ценных аккаунтов или высокого объёма опора лишь на него — обязательство под удар.
Современный ответ — не «никогда не использовать SMS», а «использовать правильный фактор на поток», часто с SMS как запасным, а не основным.
- Безопасность: SIM-swap и перехват могут одолеть SMS-OTP.
- Надёжность: доставка best-effort и различается по странам.
- Стоимость: каждая отправка тарифицируется и масштабируется с вашими пользователями.
Passkey (WebAuthn / FIDO2)
Passkey заменяют пароли и OTP криптографической парой ключей, привязанной к устройству пользователя и разблокируемой биометрией или PIN. Они устойчивы к фишингу по замыслу, ничего не стоят за аутентификацию и теперь поддерживаются в основных браузерах и платформах с облачной синхронизацией. Для новых потребительских продуктов passkey всё чаще становятся рекомендуемым основным фактором.
- Сильно: устойчивость к фишингу, нет стоимости за использование, отличный UX после настройки.
- Слабее: восстановление аккаунта и кросс-экосистемная синхронизация требуют тщательного проектирования.
- Используйте как основной фактор для новых потоков, с запасным для восстановления.
Приложения-аутентификаторы TOTP
TOTP (одноразовые пароли на основе времени) генерируют сменяющийся 6-значный код в приложении вроде Google Authenticator или Authy из общего секрета. Нет зависимости от доставки и нет стоимости за использование, и он куда устойчивее к перехвату, чем SMS. Компромисс — трение настройки и восстановление при потере устройства.
- Сильно: нет риска доставки, нет стоимости за использование, устойчив к SIM-swap.
- Слабее: трение регистрации; нужны коды восстановления для потерянных устройств.
- Отлично как усиливающий фактор для пользователей, заботящихся о безопасности.
Magic link
Magic link отправляет пользователю по e-mail одноразовый URL входа, полностью убирая пароли для продуктов, ориентированных на e-mail. Это просто и знакомо, но зависит от доставляемости e-mail, наследует фишинговую поверхность e-mail и плохо работает, когда ссылка открывается в браузере, отличном от того, где идёт вход.
- Сильно: без пароля, знакомо, номер телефона не нужен.
- Слабее: доставляемость e-mail и кросс-браузерная обработка ссылок; фишинговая поверхность.
- Хорошо для низкорисковых, e-mail-first продуктов; сочетайте с проверками устройства для чувствительных действий.
Сравнение вариантов
Единого победителя нет — подбирайте фактор под риск и аудиторию. Распространённый современный паттерн — passkey как основной, TOTP как усиление, а SMS сохраняется лишь как крайний запасной для пользователей, у которых нет ничего другого.
| Метод | Безопасность | Стоимость за использование | Лучше всего для |
|---|---|---|---|
| SMS-OTP | Умеренная (риск SIM-swap) | За сообщение | Широкого охвата, низкорискового запасного |
| Passkey | Высокая (устойчив к фишингу) | Нет | Основного фактора для новых продуктов |
| Приложение TOTP | Высокая | Нет | Усиления для заботящихся о безопасности |
| Magic link | Умеренная | Только стоимость e-mail | E-mail-first, низкорисковых потоков |
Как перейти, не ломая пользователей
Не вырывайте SMS за одну ночь. Добавьте более сильный фактор как опцию, поощряйте регистрацию, и лишь затем понизьте SMS до запасного. Держите путь восстановления для каждого метода, чтобы потеря устройства или канала никогда не заперла пользователя.
- 1
Добавляйте, а не заменяйте
Введите passkey или TOTP как дополнительную опцию, сохраняя работающий SMS.
- 2
Подталкивайте к регистрации
Предлагайте пользователям настроить более сильный фактор в естественные моменты, например после чувствительного действия.
- 3
Понизьте SMS до запасного
Когда принятие здорово, сделайте SMS каналом восстановления/крайней меры, а не по умолчанию.
- 4
Гарантируйте восстановление
Предоставьте коды восстановления или альтернативный фактор, чтобы ни одна потеря устройства никого не заперла.