Правила защиты API

Правила защиты API (API shielding rule) — специальное правило в разделе Пользовательские правила → Правила защиты, которое помогает защитить API-эндпоинты от прямых вызовов в обход сайта.

Правило разрешает доступ к указанным API-путям только в течение заданного времени после того, как пользователь посетил веб-страницу защищаемого ресурса. Если запрос к API приходит напрямую и у пользователя нет недавнего посещения сайта, такой запрос будет заблокирован.

Для чего используются

Правила защиты API подходит для API-эндпоинтов, которые по бизнес-логике должны вызываться только из браузера после взаимодействия пользователя с сайтом.

Например, правило можно использовать для защиты:

  • внутренних API сайта;

  • AJAX-эндпоинтов;

  • API поиска, фильтрации, корзины или оформления заказа;

  • API, которые используются фронтендом сайта, но не должны быть доступны напрямую;

  • эндпоинтов, к которым часто обращаются боты, скрейперы или автоматизированные инструменты.

Правила защиты API помогает снизить количество прямых автоматизированных обращений к API-ручкам без загрузки страниц сайта.

Как работает правило

В правиле настраиваются два основных параметра:

Параметр Описание

Защищаемые URL-пути

Список API-путей, которые нужно защитить от прямого доступа

Разрешённое время доступа к API после последнего посещения сайта

Период времени, в течение которого доступ к API разрешён после последнего посещения сайта

Логика работы:

  1. Пользователь открывает страницу сайта.

  2. После посещения сайта пользователь может обращаться к защищённым API-эндпоинтам.

  3. Доступ разрешён только в течение заданного времени, например 8 часов.

  4. Если API-эндпоинт вызывается напрямую без недавнего посещения сайта, запрос блокируется.

Особенности

  • Для одного защищаемого ресурса можно создать только одно правило защиты API.

  • Правило всегда применяется раньше остальных enforcement-правил. В таблице оно отображается первой строкой с номером 0.

  • Правила защиты API нельзя перемещать в списке правил.

  • Для этого правила не используются настройки обычных правил защиты:

    • действия по классам пользователей;

    • CAPTCHA;

    • rate limits;

    • условия применения во время DDoS-атаки;

    • дополнительные traffic conditions.

  • В правилах защиты API настраиваются только:

    • защищаемые URL-пути;

    • время доступа после последнего посещения сайта;

    • состояние правила: включено или выключено.

Как создать

  1. Перейдите в раздел Защита приложений → Ресурсы.

  2. Найдите ресурс, для которого нужно настроить правила, нажмите на три точки (…) в конце строки и выберите Пользовательские правила.

  3. Откройте таб Правила защиты.

  4. Нажмите Создать правило защиты.

  5. Если Правила защиты API ещё не создано, откроется выпадающий список.

  6. Выберите Правила защиты API.

  7. В поле Защищаемые URL-пути укажите API-пути, которые нужно защитить.

  8. В поле Разрешённое время доступа к API после последнего посещения сайта укажите время доступа к API после последнего посещения сайта.

  9. Нажмите Создать.

После создания правило появится первой строкой в таблице enforcement-правил.

Настройка защищаемых URL-путей

В поле Защищаемые URL-пути укажите один или несколько API-путей, которые нужно защитить от прямого доступа.

Примеры путей:

/api/search
/api/items
/api/cart
/templates/desktop/

Можно добавить несколько условий через Or.

Для каждого пути можно выбрать оператор сравнения. Например:

Оператор Когда использовать

equals

Если нужно защитить конкретный путь

contains

Если нужно защитить пути, содержащие заданный фрагмент

starts with

Если нужно защитить группу путей с одинаковым началом

Рекомендуется указывать только те API-пути, которые действительно должны использоваться через сайт.

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

Настройка времени доступа

Параметр Разрешённое время доступа к API после последнего посещения сайта определяет, как долго после последнего посещения сайта пользователь может обращаться к защищённым API-путям.

Доступные значения:

Значение в интерфейсе Описание

5 minutes

5 минут после последнего посещения сайта

15 minutes

15 минут после последнего посещения сайта

30 minutes

30 минут после последнего посещения сайта

1 hour

1 час после последнего посещения сайта

2 hours

2 часа после последнего посещения сайта

3 hours

3 часа после последнего посещения сайта

4 hours

4 часа после последнего посещения сайта

6 hours

6 часов после последнего посещения сайта

8 hours

8 часов после последнего посещения сайта

12 hours

12 часов после последнего посещения сайта

24 hours

24 часа после последнего посещения сайта

Custom

Пользовательское значение в минутах

Для значения Custom можно указать собственное время в минутах.

Максимальное значение для Custom1440 минут, то есть 24 часа.

Пример работы

Если выбрано значение 8 hours, пользователь сможет обращаться к защищённым API-путям в течение 8 часов после последнего посещения сайта.

Если за это время пользователь больше не посещал веб-страницы ресурса, последующие прямые запросы к защищённым API-путям будут заблокированы.

Как отредактировать

  1. Откройте Пользовательские правила → Правила защиты.

  2. Найдите строку Правила защиты API.

  3. Откройте меню действий справа.

  4. Выберите Редактировать.

  5. Измените список защищаемых путей или время доступа.

  6. Нажмите Сохранить.

Как включить или выключить

Правила защиты API можно временно включить или выключить с помощью переключателя Включено в таблице enforcement-правил.

Если правило выключено, оно не применяется к трафику.

Если правило включено, оно применяется до остальных enforcement-правил.

Как удалить

  1. Откройте Пользовательские правила → Правила защиты.

  2. Найдите строку Правила защиты API.

  3. Откройте меню действий справа.

  4. Выберите Удалить.

  5. Подтвердите удаление, если появится окно подтверждения.

После удаления правила в меню создания снова появится возможность выбрать Правила защиты 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.