Что угрожает API
- Перегрузка тяжёлыми методами. Поиск, выгрузка отчётов, генерация документов — один запрос может стоить серверу секунды работы.
- Перебор. Подбор кодов подтверждения, номеров заказов, идентификаторов пользователей.
- Злоупотребление бизнес-логикой. Массовая проверка промокодов, регистрация аккаунтов, проверка наличия товаров конкурентом.
- Утечки через перебор идентификаторов. Если API отдаёт данные по номеру заказа без проверки прав, бот выгрузит их все.
Механизмы защиты
| Механизм | Что даёт |
|---|---|
| Лимиты по ключу API и методу | Один клиент не может занять все ресурсы; тяжёлые методы ограничены отдельно |
| Проверка схемы запроса | Запросы с неожиданными полями, размерами и типами отклоняются до сервера |
| Ограничение глубины и сложности GraphQL | Защита от запросов, которые разворачиваются в миллионы строк |
| Подпись запросов мобильного приложения | Отличает ваше приложение от скрипта, повторяющего его запросы |
| Списки разрешённых клиентов | Партнёрские интеграции проходят по IP или секретному заголовку |
Наблюдаемость
В личном кабинете видно, какие клиенты и методы создают нагрузку, сколько ответов с ошибками получает каждый ключ, где упираются в лимиты. Часто это первая подсказка о том, что интеграция партнёра написана неэффективно или что ключ утёк.
Вопросы и ответы
Как защитить API мобильного приложения, если ключ можно достать из приложения?
Ключ в приложении действительно можно извлечь. Поэтому лимиты считаются не только по ключу, но и по пользователю, устройству и отпечатку клиента, а подозрительные шаблоны — например, запросы без характерных для приложения заголовков — отсекаются.
Поддерживается ли WebSocket?
Да. Соединения WebSocket проходят через фильтр с проверкой при установке соединения и лимитами на количество одновременных соединений.