К содержимому
DDoS·Protect
Решения

Бэкенд мобильного приложения: защита API без проверок в браузере

Мобильное приложение общается с сервером через API, и показать капчу посреди этого общения нельзя. Защита строится на том, чтобы отличать ваше приложение от скриптов, которые повторяют его запросы, и не задеть сервисы, без которых приложение не работает.

Почему капча и JavaScript-проверка не подходят

HTTP-клиент приложения не выполняет JavaScript и не умеет показывать страницу проверки. Если включить для API те же правила, что для сайта, приложение у пользователей просто перестанет загружать данные. Поэтому для домена API строится отдельный набор правил, а проверка браузера остаётся только для страниц, которые открываются во встроенном WebView.

Механизмы, которые работают для приложения

  • Подпись запросов секретом, который меняется с версиями приложения. Скрипт, собранный по старой версии, перестаёт проходить.
  • Лимиты по пользователю, устройству и методу. Лента и каталог допускают частые запросы, вход и отправка кода — редкие.
  • Проверка обязательных заголовков: версия приложения, платформа, идентификатор установки.
  • Схема запросов — отклонение тел, которые не соответствуют описанию метода. Подробнее — в разделе о защите API.

Старые версии, которые нельзя обновить

Часть пользователей годами не обновляет приложение. Если старая версия не подписывает запросы, для неё заводят отдельное правило с более строгими лимитами вместо полной блокировки, а в ответах API показывают просьбу обновиться. Отключать поддержку старой версии лучше по графику, глядя в журнал: сколько запросов с ней ещё приходит.

Что исключить из проверок

ЗапросПуть или источникПочему
Связывание ссылок с приложением/.well-known/apple-app-site-association, /.well-known/assetlinks.jsonИх забирают серверы Apple и Google; без доступа перестанут открываться deeplink
Уведомления магазинов приложенийВебхуки о покупках и подпискахИначе не продлятся платные подписки
Платёжные уведомленияАдреса эквайрингаИначе заказы зависнут без оплаты
Аналитика и отчёты о сбояхПакетные отправки событийБольшой объём — это нормально, нужен свой лимит

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

Подпись запросов можно извлечь из приложения. Есть ли в ней смысл?

Да. Секрет можно достать, но его смена с каждой версией заставляет злоумышленника делать это снова, а в сочетании с лимитами по устройству поддельные клиенты быстро заметны в журнале.

Нужно ли выпускать новую версию приложения для подключения защиты?

Нет, базовые лимиты и исключения работают без изменений в приложении. Подпись запросов — следующий шаг, который требует обновления.

Как быть с атаками на API с резидентных прокси?

Блокировка по адресам здесь мало помогает, решают лимиты на учётную запись и устройство. Подробнее — в разделе о ботах на резидентных прокси.

Ранний доступ

Подключим ваш сайт одним из первых

Сервис готовится к запуску. Оставьте заявку: проверим, от чего нужно защищать ваш проект, и подключим его в числе первых на условиях раннего доступа.