Условия
Условия определяют, к каким HTTP-запросам применяется правило Smart Web Security.
Объединение условий
В одном правиле может быть несколько условий, а внутри одного условия — несколько проверок. Например, в условии IP можно одновременно проверить принадлежность адреса региону и списку адресов.
Условия разных типов (например, IP и HTTP header) объединяются оператором И — запрос должен соответствовать каждому из них.
Проверки внутри условий IP, HTTP-заголовков, параметров запроса, cookie и Bot score объединяются оператором И: должны выполняться все настроенные проверки.
В одной проверке может быть несколько значений. Между ними действует ИЛИ: достаточно совпадения с одним из значений. Например, в проверке IP принадлежит региону достаточно, чтобы адрес относился к одному из указанных регионов. Так же объединяются IP-адреса и диапазоны, значения ASN и списки в одной проверке.
В проверках с отрицанием совпадений не должно быть ни с одним из значений. Например, IP не принадлежит региону означает, что адрес не относится ни к одному из указанных регионов. Аналогично IP не принадлежит списку требует, чтобы адрес не входил ни в один из указанных списков.
Если достаточно выполнения одного из условий или одной из проверок, создайте для них отдельные правила с одинаковым действием. При настройке учитывайте порядок применения правил.
В правилах ARL соответствие условиям само по себе не означает блокировку: действие применяется при превышении лимита запросов.
Примеры объединения условий
Пример с IP-адресом и HTTP-заголовком
В правиле настроены два условия:
- IP — адрес принадлежит одному из регионов
ruилиkzи входит в выбранный список адресов. - HTTP header — значение заголовка
User-Agentначинается сcurl/.
Допустим, сервис определил регион IP-адреса клиента как ru, а сам адрес входит в выбранный список. Клиент отправляет запрос:
GET /api/orders HTTP/1.1
Host: api.example.com
User-Agent: curl/8.0
Запрос соответствует обоим условиям: IP-адрес принадлежит допустимому региону и входит в список, а значение заголовка начинается с curl/.
Если заменить заголовок на User-Agent: Mozilla/5.0, запрос перестанет соответствовать условиям правила, хотя обе проверки IP по-прежнему выполнены.
Пример с исключением регионов и списка IP-адресов
В условии IP настроены две проверки: IP не принадлежит региону со значениями ru, kz, tr, ge и IP не принадлежит списку с выбранным списком адресов.
Возможны два результата проверки:
- IP-адрес вне перечисленных регионов и вне списка — обе проверки выполнены, запрос соответствует условию.
- IP-адрес относится к любому из перечисленных регионов или входит в список — условие не выполнено.
Описание условий
В таблице указаны способы сопоставления, форматы значений и примеры настройки для каждого типа условия.
Проверка Соответствует условиям на списки позволяет сопоставлять значение со списками строк или регулярных выражений. Для совпадения достаточно, чтобы значение соответствовало хотя бы одному элементу любого из выбранных списков (ИЛИ). При проверке отсутствия совпадений значение не должно соответствовать ни одному элементу ни одного из выбранных списков.
Проверка Совпадает с выполняется, только если значение совпадает с указанной строкой целиком.
|
Тип и способы сопоставления |
Значения и пример |
||
|
|
В зависимости от проверки укажите:
Например, проверке Совпадает или принадлежит диапазону со значением |
||
|
|
В поле Ключ укажите имя HTTP-заголовка. Регистр в имени не учитывается. Для сопоставления со строкой или регулярным выражением задайте в поле Значение полное значение заголовка, его префикс или регулярное выражение Пример: Ключ — Проверки заголовков объединяются оператором И. |
||
|
Request path:
Query Match (необязательно) — те же способы, а также:
|
Request path. В поле Значение укажите путь без схемы, домена и параметров запроса, его префикс или регулярное выражение. Например, в URL Перед сравнением сервис удаляет косые черты В проверке Совпадает с указывайте путь без завершающей косой черты. Регулярное выражение также должно соответствовать пути без нее. Исключение — корневой путь Если значение в проверке Начинается с заканчивается на Query Match. В поле Ключ укажите имя параметра запроса. Для сопоставления со строкой или регулярным выражением задайте в поле Значение полное значение параметра, его префикс или регулярное выражение. Пример: Ключ — Проверки параметров запроса и проверка пути объединяются оператором И. |
||
|
|
Проверяется значение заголовка |
||
|
|
Укажите метод HTTP-запроса Чтобы проверить несколько методов, используйте регулярное выражение, например `(POST |
PUT |
DELETE)`, или список строк. |
|
|
В поле Ключ укажите имя cookie. Для сопоставления со строкой или регулярным выражением задайте в поле Значение полное значение cookie, его префикс или регулярное выражение. Например, проверка Существует с ключом Проверки cookie объединяются оператором И. |
||
|
|
Укажите полное содержимое тела HTTP-запроса, его префикс или регулярное выражение. При проверке Совпадает с и значении Чтобы найти строку в любом месте тела, используйте регулярное выражение, например Условие HTTP body доступно в правилах профилей безопасности и ARL, а также в правилах-исключениях WAF. Тело запроса анализируется как обычный текст, без разбора структуры JSON или XML. Для корректного сопоставления используйте текстовое тело запроса с соответствующим заголовком
Дополнительно закодированные данные, например в формате Base64, не декодируются при сопоставлении. |
||
|
|
Список имен легитимных ботов, принадлежащих различным компаниям и сервисам, например |
||
|
|
Список категорий ботов, например |
||
|
|
Проверяется, верифицирован ли бот сервисом Smart Web Security. |
||
|
|
Оценка роботности запроса от Проверки оценки объединяются оператором И. Например, |
||
|
|
Отпечаток SSL/TLS‑соединения по методу JA3 Для JA3 используется исходная строка параметров TLS-сообщения ClientHello без MD5-преобразования. Примеры значений:
|
Формат регулярных выражений
Smart Web Security использует регулярные выражения библиотеки PIRE
Выражение должно соответствовать значению целиком. Например, выражению admin соответствует только значение admin. Чтобы найти подстроку в любом месте значения, добавьте .* в начало и конец выражения: .*admin.*.
Особенности синтаксиса
Чтобы использовать специальный символ как обычный, экранируйте его обратной косой чертой \. Например, \. соответствует точке.
В Smart Web Security символы & (пересечение выражений) и ~ (отрицание) также имеют специальное значение. Для буквального сопоставления экранируйте их: \&, \~. Например, телу запроса action=login&user=test соответствует выражение action=login\&user=.*.
В PIRE \w соответствует латинской или русской букве, а \W — любому другому символу. Цифры и _ в \w не входят.
Регистр в регулярных выражениях
По умолчанию регистр учитывается: выражению example не соответствует строка Example.
Модификатор (?i) отключает учет регистра и допускается только в начале регулярного выражения. Например, (?i)example соответствует строкам example, EXaMple и EXAMPLE.
Проверки Совпадает с и Начинается с всегда учитывают регистр: модификатор (?i) в них не действует.
Примеры регулярных выражений
В примерах используется проверка Соответствует регулярному выражению:
- Пути API. Для Request path укажите
/api/(v1|v2)/orders. Выражение соответствует путям/api/v1/ordersи/api/v2/orders, но не/api/v3/orders. - Числовой параметр запроса. Для Query Match укажите ключ
order_idи выражение[0-9]+. Ему соответствует значение12345, но неabcи не12a. - Поддомены. Для Host укажите
(api|admin)\.example\.com. Выражение соответствует значениямapi.example.comиadmin.example.com, но неapi-example.com. Обратная косая черта перед каждой точкой позволяет сопоставлять ее как обычный символ.