Вариативность¶
Вариативность по значению¶
Вариативность по значению помогает выстраивать структуру приложения, т.е. объединять несколько событий путем удаления вариативных условий.
Правило настраивается на уровне URL – в этом случае использование GET и POST в качестве элементов запроса не имеет смысла.
Создание и применение правила¶
Вы можете создать и применить правило как в разделе События, так и в разделе Правила:
-
В разделе События правила создаются с предзаполненным описанием приложения или части приложения, к которой они применяются. Описание соответствует запросу, рядом с которым вы нажали кнопку Правило.
Чтобы завершить создание правила, достаточно настроить тип действия правила и убедиться, что все части правила описаны корректно.
-
В разделе Правила все части правила необходимо заполнить вручную.
Пример правила¶
Допустим, есть множество событий, которые нужно объединить без учета PATH_1
, так как PATH_1
в примере - ID определенного объекта в приложении, а правило должно работать для всех подобных объектов.
События:
example.com/catalog/d83d2876-ea4b-4e2a-9441-38209f660071/show
example.com/catalog/fafb9d90-2310-4a37-af89-05cd6823301f/show
...
example.com/catalog/0f8a125c-09d9-4df5-a11d-5a21a66e49ef/show
Для создания правила нужно выполнить следующие действия:
-
Определите условия для области действия правила. В примере
PATH_1
нужно удалить, если:HEADER_HOST
= example.comPATH_0
= catalogACTION_NAME
= showACTION_EXT
absentPATH_2
absent
-
Выберите одно из событий, для которых необходимо задать правило.
-
В строке запроса нажмите Правило.
-
Разверните список Структура приложения и выберите Задать вариативность.
-
Разверните параметры запроса и укажите их в соответствующих полях:
-
Убедитесь, что для блока Тогда выбрано Значение.
-
Укажите ACTION_NAME как элемент запроса.
-
Нажмите Создать.
Все правила созданные позже также будут автоматически модифицированы.
Вариативность по ключу¶
Вариативность по ключу настраивается на уровне таких элементов запроса, как JSON в теле запроса.
Помогает выстраивать структуру приложения: автоматически переводить на all, ARRAY
, HASH
и другие point в правилах.
В отличие от правила [[#Вариативность по значению]] модифицирует не условия других правил, а point (значения параметров), то есть то, что касается данных внутри запроса.
Создание и применение правила¶
Вы можете создать и применить правило как в разделе События, так и в разделе Правила:
-
В разделе События правила создаются с предзаполненным описанием приложения или части приложения, к которой они применяются. Описание соответствует запросу, рядом с которым вы нажали кнопку Правило.
Чтобы завершить создание правила, достаточно настроить тип действия правила и убедиться, что все части правила описаны корректно.
-
В разделе Правила все части правила необходимо заполнить вручную.
Пример правила¶
Допустим, приложение принимает JSON документы, при парсинге и анализе которых возникают ложные срабатывания. Для корректировки работы WAF создано несколько правил, отключающих штампы:
POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_0_HASH_resultOb stamp:478
POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_23_HASH_resultOb stamp:646
POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_826_HASH_resultOb stamp:1177 POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_1037464_HASH_resultOb stamp:750
Если не добавить новое правило, то ложные срабатывания будут возникать постоянно.
Воспользуемся правилом Вариативность по ключу, для создания правила необходимо выполнить следующие действия:
-
Выберите одно из событий, для которых необходимо задать правило.
-
В строке запроса нажмите Правило.
-
Разверните список Структура приложения и выберите Задать вариативность.
-
Убедитесь, что для блока Тогда выбрано Ключ.
-
Укажите как элемент запроса: POST → JSON_DOC → HASH_list → ARRAY .
- Нажмите Создать.
Все значенияARRAY
, как у текущих, так и созданных в будущем правил, будут автоматически переведены на значенияARRAY_ALL
.
Действие правила:
POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_all_HASH_resultOb stamp:478
POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_all_HASH_resultOb stamp:646
POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_all_HASH_resultOb stamp:1177 POST_FORM_URLENCODED_queries_JSON_DOC_HASH_query_ARRAY_all_HASH_resultOb stamp:750
Вариативность через регулярное выражение¶
Вариативность через регулярное выражение оптимизирует дерево правил для запросов с параметрами, которые попадают под регулярное выражение и представляет собой функциональный аналог правил вариативность по значению и вариативность по ключу.
- Если параметр передан в URL запроса и попадает под регулярное выражение, значение параметра в дереве правил будет вырезано.
- Если параметр передан в теле запроса и попадает под регулярное выражение, значение параметра в дереве правил будет заменено на
ALL
.
Обычно правило применяется ко всем приложениям (блок условий не заполняется и правило является правилом по умолчанию). Если требуется, правило применяется только к определенным запросам, попадающим под условия правила.