Правила защиты API
Правила защиты API (API shielding rule) — специальное правило в разделе Пользовательские правила → Правила защиты, которое помогает защитить API-эндпоинты от прямых вызовов в обход сайта.
Правило разрешает доступ к указанным API-путям только в течение заданного времени после того, как пользователь посетил веб-страницу защищаемого ресурса. Если запрос к API приходит напрямую и у пользователя нет недавнего посещения сайта, такой запрос будет заблокирован.
Для чего используются
Правила защиты API подходит для API-эндпоинтов, которые по бизнес-логике должны вызываться только из браузера после взаимодействия пользователя с сайтом.
Например, правило можно использовать для защиты:
-
внутренних API сайта;
-
AJAX-эндпоинтов;
-
API поиска, фильтрации, корзины или оформления заказа;
-
API, которые используются фронтендом сайта, но не должны быть доступны напрямую;
-
эндпоинтов, к которым часто обращаются боты, скрейперы или автоматизированные инструменты.
Правила защиты API помогает снизить количество прямых автоматизированных обращений к API-ручкам без загрузки страниц сайта.
Как работает правило
В правиле настраиваются два основных параметра:
| Параметр | Описание |
|---|---|
|
Список API-путей, которые нужно защитить от прямого доступа |
|
Период времени, в течение которого доступ к API разрешён после последнего посещения сайта |
Логика работы:
-
Пользователь открывает страницу сайта.
-
После посещения сайта пользователь может обращаться к защищённым API-эндпоинтам.
-
Доступ разрешён только в течение заданного времени, например 8 часов.
-
Если API-эндпоинт вызывается напрямую без недавнего посещения сайта, запрос блокируется.
Особенности
-
Для одного защищаемого ресурса можно создать только одно правило защиты API.
-
Правило всегда применяется раньше остальных enforcement-правил. В таблице оно отображается первой строкой с номером
0. -
Правила защиты API нельзя перемещать в списке правил.
-
Для этого правила не используются настройки обычных правил защиты:
-
действия по классам пользователей;
-
CAPTCHA;
-
rate limits;
-
условия применения во время DDoS-атаки;
-
дополнительные traffic conditions.
-
-
В правилах защиты API настраиваются только:
-
защищаемые URL-пути;
-
время доступа после последнего посещения сайта;
-
состояние правила: включено или выключено.
-
Как создать
-
Перейдите в раздел
Защита приложений → Ресурсы. -
Найдите ресурс, для которого нужно настроить правила, нажмите на три точки (…) в конце строки и выберите
Пользовательские правила. -
Откройте таб
Правила защиты. -
Нажмите
Создать правило защиты. -
Если Правила защиты API ещё не создано, откроется выпадающий список.
-
Выберите
Правила защиты API. -
В поле
Защищаемые URL-путиукажите API-пути, которые нужно защитить. -
В поле
Разрешённое время доступа к API после последнего посещения сайтаукажите время доступа к API после последнего посещения сайта. -
Нажмите
Создать.
После создания правило появится первой строкой в таблице enforcement-правил.
Настройка защищаемых URL-путей
В поле Защищаемые URL-пути укажите один или несколько API-путей, которые нужно защитить от прямого доступа.
Примеры путей:
/api/search
/api/items
/api/cart
/templates/desktop/
Можно добавить несколько условий через Or.
Для каждого пути можно выбрать оператор сравнения. Например:
| Оператор | Когда использовать |
|---|---|
|
Если нужно защитить конкретный путь |
|
Если нужно защитить пути, содержащие заданный фрагмент |
|
Если нужно защитить группу путей с одинаковым началом |
Рекомендуется указывать только те API-пути, которые действительно должны использоваться через сайт.
Не добавляйте в Правила защиты API публичные API, внешние интеграции или эндпоинты, которые должны быть доступны без предварительного посещения веб-страницы.
Настройка времени доступа
Параметр Разрешённое время доступа к API после последнего посещения сайта определяет, как долго после последнего посещения сайта пользователь может обращаться к защищённым API-путям.
Доступные значения:
| Значение в интерфейсе | Описание |
|---|---|
|
5 минут после последнего посещения сайта |
|
15 минут после последнего посещения сайта |
|
30 минут после последнего посещения сайта |
|
1 час после последнего посещения сайта |
|
2 часа после последнего посещения сайта |
|
3 часа после последнего посещения сайта |
|
4 часа после последнего посещения сайта |
|
6 часов после последнего посещения сайта |
|
8 часов после последнего посещения сайта |
|
12 часов после последнего посещения сайта |
|
24 часа после последнего посещения сайта |
|
Пользовательское значение в минутах |
Для значения Custom можно указать собственное время в минутах.
Максимальное значение для Custom — 1440 минут, то есть 24 часа.
Пример работы
Если выбрано значение 8 hours, пользователь сможет обращаться к защищённым API-путям в течение 8 часов после последнего посещения сайта.
Если за это время пользователь больше не посещал веб-страницы ресурса, последующие прямые запросы к защищённым API-путям будут заблокированы.
Как отредактировать
-
Откройте
Пользовательские правила → Правила защиты. -
Найдите строку
Правила защиты API. -
Откройте меню действий справа.
-
Выберите
Редактировать. -
Измените список защищаемых путей или время доступа.
-
Нажмите
Сохранить.
Как включить или выключить
Правила защиты API можно временно включить или выключить с помощью переключателя Включено в таблице enforcement-правил.
Если правило выключено, оно не применяется к трафику.
Если правило включено, оно применяется до остальных enforcement-правил.
Как удалить
-
Откройте
Пользовательские правила → Правила защиты. -
Найдите строку
Правила защиты API. -
Откройте меню действий справа.
-
Выберите
Удалить. -
Подтвердите удаление, если появится окно подтверждения.
После удаления правила в меню создания снова появится возможность выбрать Правила защиты API.
Рекомендации по настройке
Перед включением правила убедитесь, что защищаемые API-пути действительно используются только через сайт.
Не рекомендуется добавлять в Правила защиты API:
-
публичные API;
-
API для мобильных приложений, если они не проходят через веб-страницы сайта;
-
backend-to-backend интеграции;
-
webhook-эндпоинты;
-
служебные ручки, к которым должны обращаться внешние системы;
-
эндпоинты авторизации, если они должны быть доступны до посещения сайта.
Для большинства сценариев можно начать со значения 8 hours или 24 hours, а затем скорректировать его с учётом поведения пользователей и логики приложения.
Если API вызывается сразу после открытия страницы, можно использовать меньший период, например 30 minutes, 1 hour или 2 hours.
Ограничения
Правила защиты API не заменяет авторизацию и контроль доступа на стороне приложения. Это дополнительный механизм защиты от прямых автоматизированных вызовов API в обход сайта.
Правило может повлиять на легитимные интеграции, если они обращаются к защищённым API-путям напрямую. Перед включением правила проверьте, что такие интеграции не используют указанные URL-пути.
Пример настройки
Задача: защитить API поиска и API карточки товара от прямого вызова ботами.
Настройки правила:
Защищаемые URL-пути:
/api/search
/api/item
Разрешённое время доступа к API после последнего посещения сайта:
8 hours
Результат:
-
пользователь, который сначала посетил сайт, сможет обращаться к
/api/searchи/api/itemв течение 8 часов; -
прямые запросы к
/api/searchи/api/itemбез недавнего посещения сайта будут заблокированы; -
остальные enforcement-правила будут применяться после проверки Правила защиты API.