@yestodev

Как ограничить отправку смс при регистрации пользователей?

Всем привет!

Есть такой вот интересный вопрос:

Делается сервис, пилится регистрацию (бек java/spring, хотя это вряд ли важно). Как опция есть возможность подтверждать юзера либо почтой, либо смс сообщением. И вот тут вопрос - как ограничить злоупотребление отправкой смс? Какие есть способы борьбы?

Предположим кто-то добрался до api и начинает дергать отправку сообщений. Какие вероятные способы борьбы?
Мюсли:

1) Ограничивать возможности api (не очень идея если вдруг внезапно ломанется много юзеров сразу и кто-то не сможет отправить сообщение)
2) Переход к эндпоинту отправки только при наличии определенных шагов, т.е. условный запрос /sendsms?number=xxx не сработает, если не пройден некий промежуточный этап, который в теории можно подумать как контролировать, например запрещать с одного ip повторную попытку регистрации

Какие идеи? :)

P.S.
Речь не про отправку на один номер (это контролировать легко), а массовый запрос на отправку смс на разные номера
Т.е. кто-то со злым умыслом делает 1000 запросов на 1000 РАЗНЫХ номеров.
  • Вопрос задан
  • 505 просмотров
Решения вопроса 3
@HVV777
Что если в API передавать какой-нибудь идентификатор, например CSRF-токен страницы регистрации? Это конечно не панацея, но убережет от использования апишки не по назначению.
Ответ написан
@antonwx
Если вдруг внезапно запросов становится много, показывать капчу перед отправкой смс. Так же с одного айпи, 2-3 запроса за час - потом капча. Ну и само собой регистрация в 2 этапа: сначала введите данные, затем подтвердите номер.
Запрещать 2 регистрации с одного айпи нельзя, сейчас нередка ситуация когда один айпи на пару сотен абонентов.
Ответ написан
Комментировать
@anton99zel
29а класс средней школы №7
Как работает отправка СМС - сервер шлёт на смс-шлюз запрос. Значит, нужно, чтобы смс-шлюз принимал запросы только с ip адреса вашего сервера. Если смс-шлюз свой, то не вижу проблем, если не свой, то напишите провайдеру.
массовый запрос на отправку смс на разные номера

Устанавливать сессию, если большего одного запроса с одной сессии, то блокировать отправку с этой сессии.
Если разные сессии, то ставить ограничения по ip на 5-60 минут. Не думаю, что с одного ip в течение часа кто то захочет воспользоваться вашим сервисом.
К тому же я бы приделал ограничение по Гео - rosreestr.subnets.ru/?get=num&num=79154610100
Второй момент - проводить смс регистрацию, после подтверждения email.
Ну, и добавить третью версию капчи от гугл, для надежности.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Kirill-Gorelov
С ума с IT
Такой вопрос тут задавался несколько раз.
Вариантов куча и самый эффективный и самый предлагаемый из всех, лимит на отправку смс на один номер.

Кстати сам делал такой функционал для МП. Там делал лимит на один номер иначе блокировал и все.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы