Условия
Вы можете задать следующие условия для правил:
Тип |
Виды сопоставления |
Значения |
Пример |
Логический оператор |
|
|
|
|
или |
|
|
Формат |
|
и |
|
|
Путь запроса, начало пути запроса или регулярное |
|
Не применяется |
|
|
Формат |
|
и |
|
|
Значения заголовка |
|
или |
|
|
Метод HTTP-запроса |
|
или |
|
|
Формат |
|
и |
|
|
Строка в теле HTTP-пакета или |
|
или |
Формат регулярных выражений
Регулярные выражения можно использовать в условиях HTTP header
, Request URI
, Query Match
, Host
, HTTP method
, Cookie
, HTTP body
. Так как в этих условиях есть типы сопоставления «Соответствует регулярному выражению» и «Не соответствует регулярному выражению».
Группы операторов для регулярных выражений
-
Квантификаторы. Определяют количество допустимых повторений элемента.
-
*
— ноль или более вхождений любых символов,a*
— ноль или более вхождений символаa
,a*b
— любое вхождение символаa
перед символомb
.Пример:
a*
— пустая строка,a
,aa
,aaa
и так далее. -
а+
— одно или более вхождений символаa
.Пример:
a+
—a
,aa
,aaa
и так далее. -
a?
— ноль или одно вхождение символаa
.Пример:
https?://
— соответствуетhttp://
иhttps://
-
{n}
— n вхождений. Пример:a{3}
—aaa
. -
{n,m}
— от n до m вхождений. Пример:a{3,5}
—aaa
,aaaa
,aaaaa
. -
{n,}
— не менее n вхождений. Пример:a{3,}
—aaa
,aaaa
,aaaaa
и так далее.
-
-
Символы и операции.
-
.
— любой одиночный символ (кроме новой строки).Пример:
a.b
соответствуетaab
,acb
, но неab
. -
[abc]
— один из символов внутри квадратных скобок.Пример:
[abc]
соответствуетa
,b
,c
. -
[^abc]
— любой символ, кроме указанных в квадратных скобках.Пример:
[^abc]
соответствует любому символу, кромеa
,b
,c
. -
[a-z]
— любой символ в диапазонеa
доz
.Пример:
[a-z]
соответствует любой строчной букве отa
доz
. -
a|b
— альтернатива, либоa
, либоb
.Пример:
example|domain
— либоexample
, либоdomain
. -
\\w
— любая буква. -
\\W
— не буква (цифра, подчеркивание, знаки препинания, пробел и так далее). -
\\d
— цифра и\\D
— не цифра. -
\\s
— пробел и\\S
— не пробел.
-
Примечание
Чтобы использовать символ не как оператор регулярного выражения или специальный символ, экранируйте его с помощью \
. Например, надо экранировать символы . + * [ ] ( ) { } ^ $ ?
.
Регистр в регулярных выражениях
-
Учитывать регистр. Введите регулярное выражение в нужном регистре.
Пример:
exaMple
соответствует строкеexaMple
. -
Не учитывать регистр. В начало выражения добавьте символы
(?i)
.Пример:
(?i)example
соответствует строкамexample
,EXaMple
,EXAMPLE
и так далее.
Примеры регулярных выражений
-
^User-Agent:\s*$
— блокировать запросы, у которых значение заголовкаUser-Agent
пустое или состоит только из пробелов.В этом выражении
^
— начало строки,\s*
— ноль или более пробелов,$
— конец строки. -
\\[\'\"\.\;]
— блокировать запросы, содержащие\
перед подозрительным символом (бэкслеш-инъекции).В этом выражении
\\
— бэкслеш,[\'\"\.\;]
— любой символ из скобок. -
a{100,}
— блокировать запросы, содержащие необычно длинные последовательности одинаковых символов, что может быть признаком DDoS-атаки.В этом выражении
a{100,}
— 100 или более символовa
подряд. -
--.*
— блокировать запросы, содержащие комментарии в SQL-запросах, что может быть признаком SQL-инъекции.В этом выражении
--
— начало SQL-комментария,.*
— ноль или более любых символов.