INTEGRITY Документация

Sequence mitigation

Sequence Mitigation позволяет задавать обязательные шаблоны запросов для аутентифицированных клиентов, взаимодействующих с вашим API.

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

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

Порядок Метод Путь Описание
1 GET /api/v1/users/{user_id}/accounts user_id является активным пользователем.
2 GET /api/v1/accounts/{account_id}/balance account_id является одним из аккаунтов пользователя.
3 GET /api/v1/accounts/{account_id}/balance account_id это другой аккаунт, принадлежащий пользователю.
4 POST /api/v1/transferFunds Здесь указывается тело запроса с информацией о счёте списания, счёте зачисления и сумме перевода.

Возможно, вы захотите обязать пользователей API запрашивать GET /api/v1/users/{user_id}/accounts перед GET /api/v1/accounts/{account_id}/balance и что вы запрашиваете GET /api/v1/accounts/{account_id}/balance перед POST /api/v1/transferFunds.

С помощью sequence mitigation вы можете закрепить этот шаблон запросов двумя новыми правилами sequence mitigation.

Процесс

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

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

Правила последовательностей, созданные в панели управления Cloudflare с помощью правил API Shield, используют окно просмотра истории для сопоставления эндпоинтов в последовательности. Правило срабатывает, если оба эндпоинта обнаружены в пределах 10 запросов (к конечным точкам в разделе Endpoint Management) друг от друга и выполненных в течение 10 минут друг от друга.

Если вы хотите добавить несколько конечных точек, игнорировать окно ретроспективного анализа и настроить временные ограничения, см. Пользовательские правила Sequence Mitigation.

В примере с банковским переводом средств применение правила, при котором пользователь запрашивает GET /api/v1/accounts/{account_id}/balance перед POST /api/v1/transferFunds считается позитивной моделью безопасности, поскольку пользователь может выполнить перевод средств только после запроса баланса счёта.

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

Например, если бы существовала ошибка авторизации, позволяющая пользователям перебирать чужие профили с номерами счетов через GET /api/v1/users/{var1}/profile и затем пользователь пытается совершить мошеннический перевод средств, вы можете создать правило, блокирующее или регистрирующее эту последовательность GET /api/v1/users/{var1}/profile к POST /api/v1/transferFunds.

Ограничения

Endpoint Management

Чтобы отслеживать запросы к Конечные точки API, их нужно добавить в Endpoint Management. Добавьте свои конечные точки в Endpoint Management через API Discovery, Schema validation, или вручную через дашборд Cloudflare.

Идентификаторы сессии

API Shield использует настроенный вами идентификатор сессии для отслеживания сессий. Для корректной работы sequence mitigation необходимо настроить идентификатор сессии, уникальный для каждого конечного пользователя вашего API.

Ограничения на запросы

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

При формировании последовательности Sequence Mitigation дополнительно устраняет дублирующиеся запросы к одному и тому же эндпоинту.

Для примера, в исходном пример последовательности перечисленных выше, механизм защиты последовательностей сохранит следующую последовательность:

  1. GET /api/v1/users/{user_id}/accounts
  2. GET /api/v1/accounts/{account_id}/balance
  3. POST /api/v1/transferFunds

Sequence Mitigation устранила дублирование двух запросов к GET /api/v1/accounts/{account_id}/balance и сохранил их как единый запрос.

Временные ограничения

Правила Sequence Mitigation используют период просмотра истории в 10 минут. Любые два запроса с одним и тем же идентификатором сессии продлевают последовательность, если интервал между ними не превышает 10 минут. Запрос, поступивший более чем через 10 минут после предыдущего, начинает новую последовательность.

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

Доступность

Sequence Mitigation сейчас находится в закрытой бете и доступна только клиентам с тарифом Enterprise. Если вы хотите принять участие в бета-тестировании, обратитесь к менеджеру вашего аккаунта.