Редакция
01.09.2018
Статьи

Верификация номера телефона по SMS

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

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

Что подтверждает SMS-верификация

В таком сценарии сайт связывает успешный ввод кода с подтверждением номера. Доставка сообщения и ввод кода остаются разными событиями: SMS может дойти до телефона, но пользователь ещё не отправил код на проверку.

В руководстве TargetSMS по HTTPS описаны отправка текста, получение ID сообщения и запрос его статуса. Статус доставки не следует использовать вместо результата проверки кода в вашем приложении. Из описания SMS API также не следует, что сервис проверяет паспортные данные или личность владельца номера.

Где используют подтверждение номера кодом

На странице SMS-авторизации TargetSMS приведены сценарии регистрации, входа в личный кабинет и изменения данных. Для проекта заранее выберите действие, которое пользователь будет подтверждать кодом.

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

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

Как работает верификация номера через SMS

Пример последовательности для сайта, который самостоятельно проверяет коды:

  1. Пользователь указывает номер в форме.
  2. Ваше приложение подготавливает код и текст SMS.
  3. Интеграция передаёт текст и номер получателя в TargetSMS. При успешном запросе описанный HTTPS API возвращает ID сообщения.
  4. Пользователь получает SMS и вводит код на сайте.
  5. Приложение проверяет введённое значение и фиксирует результат по своим правилам.

В руководстве по HTTPS API TargetSMS описаны параметры отправки и запроса статуса. Генерацию кода, срок его действия и обработку повторных запросов согласуйте с разработчиком выбранной интеграции. Не считайте эти настройки автоматически включёнными при подключении SMS API.

Как подключить SMS-код на сайте или в приложении

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

В инструкции TargetSMS по оформлению кодов авторизации указано, что текст должен содержать название сайта, компании, товарного знака или сервиса клиента. Пример текста: «Код для входа на сайт example.ru: 4162». Домен и код здесь условные; для отправки используйте данные своего проекта.

Пример: подтверждение номера при регистрации

Рекомендуемый сценарий для разработчика: после нажатия «Получить код» приложение создаёт запрос на подтверждение конкретного номера и отправляет подготовленный текст через TargetSMS. Факт доставки учитывается отдельно от успешного ввода кода.

Рекомендации по проверке: связывайте код с нужным запросом и номером, проверяйте срок действия и допускайте продолжение регистрации только после успешного результата. Если вы выпускаете новый код при повторном запросе, рекомендуется отменять прежний. Это правила настройки приложения, не обещание автоматической работы TargetSMS.

Как защитить сценарий от злоупотреблений

В инструкции TargetSMS по защите форм рекомендованы задержка повторного запроса, ограничения по IP-адресу и номеру, а также CAPTCHA. Эти меры настраиваются на стороне сайта; инструкция не обещает абсолютной защиты.

Дополнительные рекомендации разработчику из руководства OWASP по одноразовым кодам:

  • Ограничивайте срок действия и число попыток ввода.
  • Делайте код одноразовым и отменяйте его после успешной проверки.
  • Не записывайте значения кодов в журналы и не храните их длительно в открытом виде.
  • При выпуске нового кода по повторному запросу заменяйте прежний.

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

Что делать, если код не пришел

Сначала проверьте результат запроса на отправку. В руководстве HTTPS API перечислены ошибки, в том числе отсутствие текста, отправителя, недостаток средств и отклонение модератором. Если получен ID сообщения, по нему можно запросить статус.

Ниже приведены значения именно из руководства HTTPS API TargetSMS. Это статусы SMS, не результаты ввода кода:

Статус APIЗначение по документации
sendСтатус сообщения не получен. Это не подтверждение доставки.
not_deliverСообщение не доставлено. Конечный статус.
expiredАбонент находился вне сети во время попыток доставки. Конечный статус. Он не обозначает истечение срока кода в приложении.
deliverСообщение доставлено. Конечный статус. Результат проверки кода учитывайте отдельно.
partly_deliverСообщение отправлено, но статус так и не получен. В руководстве он указан как конечный; для выяснения причин предлагается обратиться в поддержку.

По инструкции о детальной статистике в кабинете доступны ID сообщения, номер получателя, время отправки, статус, число сегментов и стоимость. Рекомендация для диагностики: сопоставляйте эти данные с событиями своего приложения, не раскрывая коды и лишние данные пользователя.

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

Из чего складывается стоимость подтверждения номера

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

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

Подключите верификацию номера по SMS

Рекомендация перед запуском: протестируйте отправку SMS и проверку кода в своём приложении как два отдельных этапа. На странице услуги TargetSMS указан тестовый баланс 100 рублей после регистрации.

Условия подключения SMS-авторизации TargetSMS

Вопросы и ответы

Чем верификация отличается от авторизации по SMS?
В описанном сценарии верификация означает подтверждение номера кодом. При входе SMS-код используют для проверки доступа к аккаунту. Правила создания аккаунта и предоставления доступа задаёт ваше приложение.
Доставленное SMS означает, что номер подтверждён?
Нет. В руководстве HTTPS API статус deliver означает доставку сообщения. Его нельзя подменять результатом проверки введённого кода в приложении: это отдельное событие.
Кто задаёт срок действия кода и повторные отправки?
Для варианта с самостоятельной проверкой эти правила задаёт разработчик приложения. Рекомендация: ограничивать срок и попытки ввода. Не считайте такие настройки автоматически включёнными при подключении SMS API.
Что должно быть в тексте SMS с кодом?
Инструкция TargetSMS требует указывать название сайта, компании, товарного знака или сервиса клиента. Подготовьте текст для своего проекта и проверьте актуальные требования к сообщениям с кодами авторизации.
бизнес
Поделиться
1339