Конечная точка API безопасной отправки SMS - PullRequest
1 голос
/ 28 марта 2019

Объяснение

У меня есть API, работающий на Laravel 5.8 , который использует Nexmo Verify API для отправки кода по SMS для двух вещей:

  • (1) Создание учетной записи пользователя (проверьте номер телефона перед созданием счет)
  • (2) Забыли пароль (проверьте код, отправленный перед вводом нового пароль)

Этот PHP API используется приложением iOS и приложением Android.

В первом случае (1) я должен проверить, что телефонный номер не существует перед отправкой SMS.
Во втором случае (2) , я должен проверить, существует ли номер телефона перед отправкой SMS.

Итак, у меня может быть два маршрута API:

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

Проблема

Проблема в том, что у нас может быть маршрут, который выглядит как /api/phone/sendcode, и любой может вызвать этот маршрут напрямую, не используя мобильное приложение, если он найдет конечную точку (это всего лишь API). Этот маршрут может быть легко использован для рассылки спама.
Или они также могут назвать маршрут api/phone/exists тонн времени, чтобы попытаться получить всех существующих пользователей.

Вопрос

Как можно защитить конечные точки, чтобы люди не использовали их непосредственно в СПАМе или не проверяли в цикле, существует ли учетная запись?
У меня уже есть система регулирования, которая блокирует определенный IP-адрес и запрашивает конечную точку более X раз в минуту, но я думаю, что этого недостаточно, и ее можно обойти (используя прокси-сервер или что-то еще).

Кроме того, я предпочитаю избегать использования капчи.

...