Всё, что стоит знать, и ничего лишнего.
Разработка кода и срок его службы
Используйте 4–8 цифр — достаточно длинных, чтобы их нельзя было угадать, и достаточно коротких, чтобы их можно было набрать. Установите короткий срок действия (5–10 минут), аннулируйте код после одного успешного использования и ограничьте количество попыток подтверждения перед принудительной повторной отправкой. См. /answers/what-is-otp и /answers/what-is-2fa.
Защита от SMS-накачки (AIT)
Искусственно завышенный трафик — мошенничество, провоцирующее потоки одноразовых паролей (OTP) на платные номера, чтобы получить свою долю — может незаметно доминировать в счетах за OTP. Установите лимиты скорости для каждого номера и IP-адреса, добавьте проверки скорости и отслеживайте внезапные всплески трафика для необычных кодов стран. См. /answers/what-is-sms-pumping и /answers/what-is-ait.
Приоритет скорости и маршрута
Одноразовый пароль (OTP) чувствителен ко времени: код, полученный после того, как пользователь отказался от попытки авторизации, означает неудачную попытку входа. Отправляйте OTP по прямым маршрутам с высоким приоритетом и запасом на случай всплесков активности, а также отслеживайте DLR (Direct Router), чтобы выявлять ухудшение качества маршрута до того, как это заметят пользователи. См. /answers/what-is-dlr.
Добавить резервный канал
Если SMS-сообщения отправляются с задержкой на каком-либо рынке, автоматически переключитесь на подтверждение звонка с помощью мгновенного вызова, WhatsApp или голосовой OTP-код, чтобы конверсия не зависела от одного канала. См. /answers/what-is-flash-call-verification и /answers/what-is-silent-network-auth.
Содержание сообщений и защита от фишинга
Начните с указания своего бренда и кода, объясните, для чего он нужен, и не включайте ссылки — в легитимных сообщениях с одноразовым паролем (OTP) никогда не требуется переходить по ссылкам. Это приучает пользователей не доверять сообщениям в стиле OTP, содержащим ссылки. См. /answers/what-is-smishing.