OTP простыми словами
OTP расшифровывается как One-Time Password, то есть одноразовый пароль. Чаще всего это короткий цифровой код, который пользователь получает на телефон и вводит на сайте или в приложении.
Главное отличие от обычного пароля — такой код:
- действует ограниченное время;
- предназначен для одного сценария;
- становится недействительным после успешной проверки;
- не должен храниться или передаваться как постоянный пароль.
OTP используют при регистрации, входе без пароля, восстановлении доступа, смене важных данных и подтверждении платежей или других чувствительных действий.
Как проходит проверка номера
В типичном сценарии участвуют пользователь, ваш бэкенд и сервис доставки:
- Пользователь вводит номер телефона в вашем интерфейсе.
- Ваш сервер отправляет запрос
POST /api/otp/sendв Cascade. - Cascade создаёт код и доставляет его через доступный канал.
- Пользователь вводит полученный код у вас в форме.
- Ваш сервер передаёт код в
POST /api/otp/verify. - После успешной проверки вы завершаете регистрацию, вход или другое действие.
API-ключ нельзя помещать в браузер или мобильное приложение. Оба запроса должны идти с вашего сервера с заголовком Authorization: Bearer <token>.
Через какие каналы Cascade отправляет OTP
Сейчас публично доступны WhatsApp и Telegram. Успешная доставка через каждый из этих каналов стоит 3 кредита. SMS предусмотрен в архитектуре и биллинге, но публичный SMS-провайдер пока не запущен, поэтому обещать его как доступный канал нельзя.
Выбор канала зависит от настроек компании и доступности получателя. Для пользователя процесс остаётся одинаковым: он получает шестизначный код и вводит его в вашем продукте.
Актуальные условия собраны на странице тарифов, а технические параметры — в документации.
Сколько действует OTP
Стандартный OTP Cascade состоит из 6 цифр и действует 300 секунд, то есть 5 минут. Короткий срок уменьшает время, в течение которого украденный или подсмотренный код может быть использован.
Не стоит автоматически считать более длинный TTL удобнее. Для большинства сценариев безопаснее показать понятный таймер и разрешить контролируемую повторную отправку, чем держать один код активным слишком долго.
Как защищать OTP-сценарий
Сам код не делает авторизацию безопасной автоматически. На стороне продукта нужны дополнительные меры:
- ограничение количества отправок на номер, аккаунт и IP;
- ограничение попыток ввода;
- задержка перед повторной отправкой;
- хранение API-ключа в серверных секретах;
- запрет на запись кодов и токенов в открытые логи;
- одинаковый ответ для существующих и несуществующих аккаунтов;
- мониторинг ошибок, повторных запросов и подозрительной активности.
OTP подтверждает доступ к каналу в конкретный момент, но не защищает от всех видов мошенничества. Для критичных операций его дополняют антифродом, проверкой сессии и дополнительными факторами.
OTP и виртуальные номера — не одно и то же
Cascade не выдаёт временные или одноразовые телефонные номера. Вы передаёте номер своего пользователя, а сервис доставляет на него код.
Сервисы виртуальных номеров работают иначе: они предоставляют чужой номер для входящего сообщения от стороннего сайта. Это другой продукт, другая задача и другой риск-профиль. Для подтверждения клиентов собственного сайта или приложения нужен исходящий OTP API.
Как начать интеграцию
Создайте аккаунт, получите серверный API-ключ и выполните тестовую отправку по инструкции POST /otp/send. Затем добавьте проверку через POST /otp/verify, обработайте ошибки API и настройте webhooks, если вашему продукту нужны асинхронные статусы.
После регистрации начисляется 1000 стартовых кредитов. Этого достаточно, чтобы проверить интеграцию и поведение интерфейса на тестовых сценариях до промышленного запуска.