Почему капча и JavaScript-проверка не подходят
HTTP-клиент приложения не выполняет JavaScript и не умеет показывать страницу проверки. Если включить для API те же правила, что для сайта, приложение у пользователей просто перестанет загружать данные. Поэтому для домена API строится отдельный набор правил, а проверка браузера остаётся только для страниц, которые открываются во встроенном WebView.
Механизмы, которые работают для приложения
- Подпись запросов секретом, который меняется с версиями приложения. Скрипт, собранный по старой версии, перестаёт проходить.
- Лимиты по пользователю, устройству и методу. Лента и каталог допускают частые запросы, вход и отправка кода — редкие.
- Проверка обязательных заголовков: версия приложения, платформа, идентификатор установки.
- Схема запросов — отклонение тел, которые не соответствуют описанию метода. Подробнее — в разделе о защите API.
Старые версии, которые нельзя обновить
Часть пользователей годами не обновляет приложение. Если старая версия не подписывает запросы, для неё заводят отдельное правило с более строгими лимитами вместо полной блокировки, а в ответах API показывают просьбу обновиться. Отключать поддержку старой версии лучше по графику, глядя в журнал: сколько запросов с ней ещё приходит.
Что исключить из проверок
| Запрос | Путь или источник | Почему |
|---|---|---|
| Связывание ссылок с приложением | /.well-known/apple-app-site-association, /.well-known/assetlinks.json | Их забирают серверы Apple и Google; без доступа перестанут открываться deeplink |
| Уведомления магазинов приложений | Вебхуки о покупках и подписках | Иначе не продлятся платные подписки |
| Платёжные уведомления | Адреса эквайринга | Иначе заказы зависнут без оплаты |
| Аналитика и отчёты о сбоях | Пакетные отправки событий | Большой объём — это нормально, нужен свой лимит |
Вопросы и ответы
Подпись запросов можно извлечь из приложения. Есть ли в ней смысл?
Да. Секрет можно достать, но его смена с каждой версией заставляет злоумышленника делать это снова, а в сочетании с лимитами по устройству поддельные клиенты быстро заметны в журнале.
Нужно ли выпускать новую версию приложения для подключения защиты?
Нет, базовые лимиты и исключения работают без изменений в приложении. Подпись запросов — следующий шаг, который требует обновления.
Как быть с атаками на API с резидентных прокси?
Блокировка по адресам здесь мало помогает, решают лимиты на учётную запись и устройство. Подробнее — в разделе о ботах на резидентных прокси.
Читайте также
- ВозможностиЗащита API от DDoS, ботов и злоупотребленийЛимиты по ключам, схема запросов, защита мобильных приложений
- АтакиАтаки на API: признаки и защитаПерегрузка, перебор и злоупотребление логикой API
- АтакиБоты на резидентных проксиБоты с домашних IP-адресов, которые не отсечь по сетям
- ВозможностиОграничение скорости запросовОтдельные лимиты для поиска, корзины, входа и API