Перейти к содержанию

Вариативность

Вариативность по значению

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

Правило настраивается на уровне 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

Для создания правила нужно выполнить следующие действия:

  1. Определите условия для области действия правила. В примере PATH_1 нужно удалить, если:

    • HEADER_HOST = example.com
    • PATH_0 = catalog
    • ACTION_NAME = show
    • ACTION_EXT absent
    • PATH_2 absent
  2. Выберите одно из событий, для которых необходимо задать правило.

  3. В строке запроса нажмите Правило.


    Правило для события

  4. Разверните список Структура приложения и выберите Задать вариативность.

  5. Разверните параметры запроса и укажите их в соответствующих полях:


    Правило вариативность по значению

  6. Убедитесь, что для блока Тогда выбрано Значение.

  7. Укажите ACTION_NAME как элемент запроса.

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

Все правила созданные позже также будут автоматически модифицированы.

Вариативность по ключу

Вариативность по ключу настраивается на уровне таких элементов запроса, как JSON в теле запроса.

Помогает выстраивать структуру приложения: автоматически переводить на all, ARRAYHASH и другие 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   

Если не добавить новое правило, то ложные срабатывания будут возникать постоянно.

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

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

  2. В строке запроса нажмите Правило.


    Правило для события

  3. Разверните список Структура приложения и выберите Задать вариативность.

  4. Убедитесь, что для блока Тогда выбрано Ключ.

  5. Укажите как элемент запроса: POST → JSON_DOC → HASH_list → ARRAY .


Правило вариативность по ключу

  1. Нажмите Создать.
    Все значения 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.

Обычно правило применяется ко всем приложениям (блок условий не заполняется и правило является правилом по умолчанию). Если требуется, правило применяется только к определенным запросам, попадающим под условия правила.

Синтаксис регулярных выражений →