Лимиты запросов

Как настроить лимиты запросов для вашего ресурса, как они работают и какое место занимают в иерархии фильтрации.

Функционал подключается по запросу. Если внутри Пользовательских правил в UI вкладка «Лимиты запросов» неактивна, напишите в поддержку — откроем её для вас.

О группе правил

Описание

Лимиты запросов — группа правил, которая устанавливает ограничение: сколько запросов к конкретному URI-пути можно отправить с одного IP за временной промежуток.

Пример лимита: принимать к странице /login не больше 5 запросов в минуту с одного IP. Если IP пришлёт больше запросов, заблокировать его на 5 минут.

Лимиты запросов пригодятся, когда нужно:

  • защитить эндпоинты от перегрузки;

  • снизить риск эксплуатации бизнес-логики;

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

Настройте для нужных URI-путей допустимую частоту запросов. Обычная нагрузка будет проходить, а IP-адреса с аномальной активностью — временно блокироваться.

Как работает

  1. Вы создаёте лимитное правило и указываете:

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

    • сколько запросов с одного IP допустимо за выбранный период;

    • на какое время заблокировать IP, если он превысит лимит.

  2. Система считает, сколько запросов каждый IP отправил к этому URI-пути.

  3. Если IP превысит лимит, система заблокирует его на указанное время.

  4. Когда время блокировки закончится, этот IP снова сможет отправлять запросы.

Чем отличается от правил защиты

В разделе Пользовательские правила можно устанавливать лимиты запросов с помощью двух групп правил: Лимиты запросов (о них вы сейчас читаете) и Правила защиты.

Разница в широте настроек и принципе работы. Лимиты запросов — точечный функционал, который временно ограничивает число запросов с одного IP к конкретным URI-путям. Правила защиты — более гибкий функционал, в котором лимит работает как одно из условий правила: если запрос подходит под условия, защита применяет к нему выбранное действие.

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

Лимиты запросов Правила защиты

Быстрота настройки

Быстро

Дольше

Когда выбирать

Нужно ограничить частые запросы к конкретному URI-пути

Нужно ограничить частые запросы с гибким набором характеристик (список характеристик в строке ниже)

По каким параметрам трафика можно установить лимит

URI-путь

URI-путь, страна, ASN, query string, headers, cookies, метод, User-Agent, IP/подсети, SP hash и другие параметры

На что можно поставить лимит

Число запросов с одного IP

  • Число запросов с одного IP

  • Общее число запросов к вашему ресурсу

Что происходит при достижении лимита

IP-адрес, откуда шли запросы к указанному URI-пути, блокируется на заданное время. Новые запросы от него не проходят до окончания блокировки.

К запросам, подходящим под заданные условия и превысившим лимит, применяется выбранное вами действие. Можно указать любое из пяти действий:

  • пропустить;

  • заблокировать;

  • выдать JS-челлендж;

  • выдать cookie-челлендж;

  • выдать CAPTCHA.

Лимит работает как дополнительное условие правила. Вы можете изменить механику лимита так, чтобы действие выполнялось не после, а до его достижения.

Подробнее

Можно выбрать один из режимов:

  • После достижения лимита — всем знакомый вариант, подходит для санкций/блокировок. Например, блокировать запросы с IP после того, как он превысил лимит.

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

Можно ли учитывать статус DDoS-атаки

Нет

Да. Можно указать, когда должен работать лимит: всегда, только во время DDoS-атаки или пока нет DDoS-атаки.

Доступны для режима Антибот

Да

Да

Доступны для режима Анти-DDoS

Да

Нет

Какое место занимает в иерархии фильтрации

Наша защита фильтрует каждый запрос поэтапно: сначала с помощью одного механизма фильтрации, затем второго, третьего и так далее. В списке ниже вы увидите, на каком месте стоят Лимиты запросов.

В зависимости от того, какой режим защиты вы подключили (Антибот или Анти-DDoS), набор этапов будет отличаться.

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

Рекомендации

  • Создавайте отдельные правила для важных URI-путей. Так проще подобрать подходящий лимит и снизить риск случайной блокировки обычных запросов.

  • Не ставьте слишком низкие лимиты для страниц, на которые часто заходят пользователи.

  • Перед настройкой лимита оцените нагрузку на URI-путь по графикам в Логах запросов. Учитывайте обычную частоту запросов и пиковые значения, чтобы установить лимит, который не будет мешать легитимному трафику.

  • Для страниц входа, регистрации и восстановления пароля можно использовать более строгие лимиты.

  • Если URI-путь часто используется для AJAX-запросов, проверьте, что лимит не мешает работе интерфейса.

Настройка

Открыть «Лимиты запросов»

Перейдите в раздел Защита приложенийРесурсы. Напротив ресурса, для которого хотите настроить лимит, нажмите на три точки () и выберите Пользовательские правила. Откроется раздел, где вы найдёте вкладку Лимиты запросов.

Создать лимитное правило

  1. Нажмите + Создать лимитное правило. Откроется окно создания правила, все дальнейшие шаги выполняйте в нём.

  2. В поле Имя правила задайте понятное название, которое описывает суть лимита и поможет найти его в списке.

    Примеры:

    • «Защита формы входа».

    • «Ограничение запросов к API».

  3. Укажите URI-путь, для которого будет действовать правило.

    Можно выбрать оператор. Он определяет, как система будет сравнивать URI из запроса со значением в правиле:

    • = — правило сработает только для указанного пути. Пример: URI-путь = /login.

    • начинается с — правило сработает для указанного пути и всех вложенных путей. Пример: URI-путь начинается с /api/.

    Можно указать не один, а сразу несколько URI-путей. Для этого добавьте новые пути через + или.

    Лимит будет общим для всех URI-путей, указанных в правиле.

    Пример. Вы добавили в правило условия:

    • URI-путь = /comments или URI-путь начинается с /contact.

    • Лимит — 15 запросов за 60 секунд.

    Если за минуту с одного IP придёт 10 запросов к /comments, 3 запроса к /contact и 3 запроса к /contact/press, система посчитает их вместе. Общий лимит (15 запросов) будет превышен, поэтому IP временно заблокируется.

  4. Задайте параметры Лимита запросов, при превышении которых IP будет заблокирован:

    • Запросов — максимальное количество запросов, которое система должна зафиксировать. Например, 20.

    • Период — время в секундах, за которое система будет считать запросы. Пример: 60 (одна минута).

  5. Укажите Длительность блокировки — время в секундах, на которое система заблокирует IP-адрес после превышения лимита. Пример: 3600 (один час).

  6. Нажмите Создать правило. Правило появится в списке и начнёт работать.

Примеры настроек

Ниже приведены примеры, как можно настроить лимитное правило. Кликните на заголовок, чтобы раскрыть описание.

Пример 1. Ограничение запросов к конкретному URI-пути

Настройки правила:

  • URI-путь = /api/v1/orders.

  • Запросов100.

  • Период (сек.)60.

  • Длительность блокировки (сек.)120.

Правило будет учитывать только запросы к /api/v1/orders. Если с одного IP поступит больше 100 запросов за 60 секунд, система заблокирует этот IP на 120 секунд.

Пример 2. Ограничение запросов к группе URI-путей

Настройки правила:

  • URI-путь начинается с /api/v1/.

  • Запросов200.

  • Период (сек.)60.

  • Длительность блокировки (сек.)120.

Правило будет учитывать запросы ко всем путям, которые начинаются с /api/v1/, например:

  • /api/v1/catalog;

  • /api/v1/search;

  • /api/v1/products.

Если с одного IP поступит больше 200 запросов к путям, которые подходят под правило, система заблокирует этот IP на 120 секунд.

Управление

На вкладке Лимиты запросов вы найдёте список всех созданных лимитных правил. Управлять правилами можно прямо из списка:

  • Редактировать: нажмите на три точки () в конце строки и выберите Редактировать. В открывшемся окне измените нужные параметры правила.

  • Удалить: нажмите на три точки (), выберите Удалить и подтвердите удаление.

Список правил