Expressões de regra usam operadores de comparação para corresponder a valores de requisição e operadores lógicos para combinar condições.
Operadores de comparação
Operadores de comparação comparam um valor de requisição recebida com um valor especificado na expressão.
eq
Verifica se o valor da requisição é igual ao valor especificado.
Nome do operador:
Equal toTipo de valor:
String-
Exemplo:
(http.host eq "www.example.com")
ne
Verifica se o valor da requisição é diferente do valor especificado.
Nome do operador:
Not equal toTipo de valor:
String-
Exemplo:
(http.host ne "www.example.com")
contains
Verifica se o valor da requisição contém a string especificada.
Nome do operador:
ContainsTipo de valor:
String-
Exemplo:
(http.host contains "example.com")
not...contains
Verifica se o valor da requisição não contém a string especificada.
Nome do operador:
Does not containTipo de valor:
String-
Exemplo:
(not http.host contains "example.com")
matches
Verifica se o valor da requisição corresponde a uma expressão regular especificada (compatível com PCRE).
Somente os planos Premium e Enterprise aceitam expressões regulares.
Nome do operador:
Matches regexTipo de valor:
String-
Exemplo:
(http.host matches "(www|blog)\.example\.com")
not...matches
Verifica se o valor da requisição não corresponde a uma expressão regular especificada (compatível com PCRE).
Somente os planos Premium e Enterprise aceitam expressões regulares.
Nome do operador:
Does not match regexTipo de valor:
String-
Exemplo:
(not http.host matches "(www|blog)\.example\.com")
in
Verifica se o valor da requisição corresponde a qualquer valor em um conjunto especificado. Use o símbolo $ para referenciar uma lista.
Nome do operador:
Is inTipo de valor:
Array-
Exemplo:
(http.host in {"www.example.com" "blog.example.com"})
( ip.src in $<LIST_NAME>)
not...in
Verifica se o valor da requisição não corresponde a nenhum valor em um conjunto especificado. Use o símbolo $ para referenciar uma lista.
Nome do operador:
Is not inTipo de valor:
Array-
Exemplo:
(not http.host in {"www.example.com" "blog.example.com"})
(not ip.src in $<LIST_NAME>)
starts_with
Verifica se o valor da requisição começa com a string especificada.
Nome do operador:
Starts withTipo de valor:
String-
Exemplo:
(starts_with(http.host, "blog"))
not starts_with
Verifica se o valor da requisição não começa com a string especificada.
Nome do operador:
Does not start withTipo de valor:
String-
Exemplo:
(not starts_with(http.host, "blog"))
ends_with
Verifica se o valor da requisição termina com a string especificada.
Nome do operador:
Ends withTipo de valor:
String-
Exemplo:
(ends_with(http.host, "cn"))
not ends_with
Verifica se o valor da requisição não termina com a string especificada.
Nome do operador:
Does not end withTipo de valor:
String-
Exemplo:
(not ends_with(http.host, "cn"))
le
Verifica se o valor da requisição é menor ou igual ao valor numérico especificado.
Nome do operador:
Less than or equal toTipo de valor:
int-
Exemplo:
(ip.geoip.asnum le 45104)
ge
Verifica se o valor da requisição é maior ou igual ao valor numérico especificado.
Nome do operador:
Greater than or equal toTipo de valor:
int-
Exemplo:
(ip.geoip.asnum ge 45104)
lt
Verifica se o valor da requisição é menor que o valor numérico especificado.
Nome do operador:
Less thanTipo de valor:
int-
Exemplo:
(ip.geoip.asnum lt 45104)
gt
Verifica se o valor da requisição é maior que o valor numérico especificado.
Nome do operador:
Greater thanTipo de valor:
int-
Exemplo:
(ip.geoip.asnum gt 45104)
len eq
Verifica se o comprimento do valor da requisição é igual ao valor numérico especificado.
Nome do operador:
Length equalsTipo de valor:
String-
Exemplo:
(len(http.request.cookies["session"]) eq 330688)
len gt
Verifica se o comprimento do valor da requisição é maior que o valor numérico especificado.
Nome do operador:
Length is greater thanTipo de valor:
String-
Exemplo:
(len(http.request.cookies["session"]) gt 330688)
len lt
Verifica se o comprimento do valor da requisição é menor que o valor numérico especificado.
Nome do operador:
Length is less thanTipo de valor:
String-
Exemplo:
(len(http.request.cookies["session"]) lt 330688)
exists
Verifica se um campo ou atributo especificado existe na requisição.
Nome do operador:
ExistsTipo de valor:
String-
Exemplo:
(exists(http.request.headers["user-agent"]))
not exists
Verifica se um campo ou atributo especificado não existe na requisição.
Nome do operador:
Does not existTipo de valor:
String-
Exemplo:
(not exists(http.request.headers["user-agent"]))
Outros operadores
lower
Converte o valor da requisição para minúsculas para permitir correspondência sem distinção entre maiúsculas e minúsculas.
Nome do operador:
Case-insensitiveTipo de valor:
String-
Exemplo:
(lower(http.request.uri))
Operadores lógicos
Operadores lógicos combinam várias expressões em uma expressão composta.
not
Nega o resultado de uma expressão, invertendo verdadeiro para falso e vice-versa.
Nome do operador:
Logical NOT-
Exemplo:
not (http.host eq "www.example.com")
and
Retorna verdadeiro somente quando todas as expressões combinadas forem verdadeiras.
Nome do operador:
Logical AND-
Exemplo:
((http.host eq "www.example.com") and (ip.geoip.country eq "CN"))
or
Retorna verdadeiro se qualquer expressão combinada for verdadeira.
Nome do operador:
Logical OR-
Exemplo:
((http.host eq "www.example.com") or (ip.geoip.country eq "CN"))
Caracteres curinga
?
Corresponde a qualquer caractere único.
Nome do operador:
Tipo de valor:
Exemplo:
*
Corresponde a qualquer quantidade de caracteres.
Nome do operador:
Tipo de valor:
Exemplo:
Símbolos de agrupamento
Use parênteses ( e ) para agrupar partes da expressão e controlar a ordem de avaliação.
Os símbolos de agrupamento são compatíveis com o editor de expressões e a API do ESA, mas não estão disponíveis no construtor de expressões.
Exemplo de expressão aninhada:
(http.host eq "www.example.com" and ((http.referer in {"download.example.com"}) or (http.referer in {"image.example.com"})))