- Приложение на Android
- Внешнее API
- В приложении есть авторизация через смс
Процесс авторизации:
При авторизации приложение стучится на API - API шлет запрос на СМС сервис - .... - пользователь получает СМС и авторизуется
Пользователи из "недружественных государств" выкачали APK из стора и нашли этот метод который дергает мое API и начали каждую секунду дергать смс
Пробовал делать фильтрацию на кол-во запросов, но они каждый запрос меняют IP
Подскажите, какое решение можно применить в данной ситуации
Были варианты:
- Сделать новую сборку, поменять исходники и все обфурцировать, но нормального инструмента не нашел, а те что нашел не дают полной уверенности, что нельзя собрать все назад
- Сделать авторизацию через пуши
мне кажется универсального решения нет
если злоумышленники пожелают, они могут заддосить любую форму регистрации, отправляя запросы на случайные телефонные номера :(
Раз это именно авторизация то отказаться от sms. Сделать подтверждение почтой или в мессенджерах. Или подтверждение по OTP.
Другой вариант, если аудитория конкретной страны то можно:
1 ограничить доступ по IP подсетей страны. Т.е. доступ только для страны
2 ввести проверку введённых номеров, по коду оператора
3 ввести проверку введённых номеров по наличию в твоей БД, у тебя же именно авторизация а не регистрация
4 ввести лимит по запросам до api с IP адреса обратившегося
5 усложнить обращение к апи путем введения временного ключа, ключ уникальный для каждого клиента. Видишь что с одним ключем много обращений то банишь юзверя.
ну они же наверное указывают номера на которые слать sms, делай рейт лимиты, задержку на количество смс/авторизаций на ip/номер ограничение по кодам стран и тд.
для сервера можно использовать фильтрацию по geoip