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 avaliam um valor da requisição recebida em relação a um valor especificado na expressão.
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")
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"))
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")
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"]))
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)
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)
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>)
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)
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)
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)
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 oferecem suporte a expressões regulares.
Nome do operador:
Matches regexTipo de valor:
String-
Exemplo:
(http.host matches "(www|blog)\.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")
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"))
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"]))
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"))
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")
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>)
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 oferecem suporte a expressões regulares.
Nome do operador:
Does not match regexTipo de valor:
String-
Exemplo:
(not http.host matches "(www|blog)\.example\.com")
percent
Filtra requisições com base em um campo e um valor percentual especificados.
Nome do operador:
PercentageTipo de valor:
IntFaixa de valores: 1 a 100
Se o valor do campo estiver vazio (por exemplo, a requisição não incluir o cabeçalho especificado), a regra não terá efeito e o resultado da correspondência será false.
Campos compatíveis:
Cabeçalho:
http.request.headers["example"]IP do cliente:
ip.srcString de consulta URI:
http.request.uri.args["example"]Timestamp da requisição:
http.request.timestamp.sec
Exemplos:
percent(http.request.headers["example"],80)percent(ip.src,80)percent(http.request.cookies["example"],80)percent(http.request.args["example"],80)percent(http.request.timestamp.sec,80)
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"))
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 composite expression.
and
Retorna verdadeiro apenas 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"))
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")
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"))
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 com o 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"})))