Les expressions de règle utilisent des opérateurs de comparaison pour faire correspondre les valeurs de requête et des opérateurs logiques pour combiner les conditions.
Opérateurs de comparaison
Les opérateurs de comparaison comparent une valeur de requête entrante à une valeur définie dans une expression.
contains
Vérifie si la valeur de la requête contient la chaîne spécifiée.
Nom de l'opérateur :
ContainsType de valeur :
String-
Exemple :
(http.host contains "example.com")
ends_with
Vérifie si la valeur de la requête se termine par la chaîne spécifiée.
Nom de l'opérateur :
Ends withType de valeur :
String-
Exemple :
(ends_with(http.host, "cn"))
eq
Vérifie si la valeur de la requête est égale à la valeur spécifiée.
Nom de l'opérateur :
Equal toType de valeur :
String-
Exemple :
(http.host eq "www.example.com")
exists
Vérifie si un champ ou un attribut spécifié existe dans la requête.
Nom de l'opérateur :
ExistsType de valeur :
String-
Exemple :
(exists(http.request.headers["user-agent"]))
ge
Vérifie si la valeur de la requête est supérieure ou égale à la valeur numérique spécifiée.
Nom de l'opérateur :
Greater than or equal toType de valeur :
int-
Exemple :
(ip.geoip.asnum ge 45104)
gt
Vérifie si la valeur de la requête est strictement supérieure à la valeur numérique spécifiée.
Nom de l'opérateur :
Greater thanType de valeur :
int-
Exemple :
(ip.geoip.asnum gt 45104)
in
Vérifie si la valeur de la requête correspond à l'une des valeurs d'un ensemble spécifié. Utilisez le symbole $ pour référencer une liste.
Nom de l'opérateur :
Is inType de valeur :
Array-
Exemple :
(http.host in {"www.example.com" "blog.example.com"})( ip.src in $<LIST_NAME>)
le
Vérifie si la valeur de la requête est inférieure ou égale à la valeur numérique spécifiée.
Nom de l'opérateur :
Less than or equal toType de valeur :
int-
Exemple :
(ip.geoip.asnum le 45104)
len eq
Vérifie si la longueur de la valeur de la requête est égale à la valeur numérique spécifiée.
Nom de l'opérateur :
Length equalsType de valeur :
String-
Exemple :
(len(http.request.cookies["session"]) eq 330688)
len gt
Vérifie si la longueur de la valeur de la requête est strictement supérieure à la valeur numérique spécifiée.
Nom de l'opérateur :
Length is greater thanType de valeur :
String-
Exemple :
(len(http.request.cookies["session"]) gt 330688)
len lt
Vérifie si la longueur de la valeur de la requête est strictement inférieure à la valeur numérique spécifiée.
Nom de l'opérateur :
Length is less thanType de valeur :
String-
Exemple :
(len(http.request.cookies["session"]) lt 330688)
lt
Vérifie si la valeur de la requête est strictement inférieure à la valeur numérique spécifiée.
Nom de l'opérateur :
Less thanType de valeur :
int-
Exemple :
(ip.geoip.asnum lt 45104)
matches
Vérifie si la valeur de la requête correspond à une expression régulière spécifiée (compatible PCRE).
Seules les offres Premium et Enterprise prennent en charge les expressions régulières.
Nom de l'opérateur :
Matches regexType de valeur :
String-
Exemple :
(http.host matches "(www|blog)\.example\.com")
ne
Vérifie si la valeur de la requête est différente de la valeur spécifiée.
Nom de l'opérateur :
Not equal toType de valeur :
String-
Exemple :
(http.host ne "www.example.com")
not ends_with
Vérifie si la valeur de la requête ne se termine pas par la chaîne spécifiée.
Nom de l'opérateur :
Does not end withType de valeur :
String-
Exemple :
(not ends_with(http.host, "cn"))
not exists
Vérifie si un champ ou un attribut spécifié n'existe pas dans la requête.
Nom de l'opérateur :
Does not existType de valeur :
String-
Exemple :
(not exists(http.request.headers["user-agent"]))
not starts_with
Vérifie si la valeur de la requête ne commence pas par la chaîne spécifiée.
Nom de l'opérateur :
Does not start withType de valeur :
String-
Exemple :
(not starts_with(http.host, "blog"))
not...contains
Vérifie si la valeur de la requête ne contient pas la chaîne spécifiée.
Nom de l'opérateur :
Does not containType de valeur :
String-
Exemple :
(not http.host contains "example.com")
not...in
Vérifie si la valeur de la requête ne correspond à aucune valeur d'un ensemble spécifié. Utilisez le symbole $ pour référencer une liste.
Nom de l'opérateur :
Is not inType de valeur :
Array-
Exemple :
(not http.host in {"www.example.com" "blog.example.com"})(not ip.src in $<LIST_NAME>)
not...matches
Vérifie si la valeur de la requête ne correspond pas à une expression régulière spécifiée (compatible PCRE).
Seules les offres Premium et Enterprise prennent en charge les expressions régulières.
Nom de l'opérateur :
Does not match regexType de valeur :
String-
Exemple :
(not http.host matches "(www|blog)\.example\.com")
percent
Filtre les requêtes selon un champ spécifié et une valeur de pourcentage.
Nom de l'opérateur :
PercentageType de valeur :
IntPlage de valeurs : 1 à 100
Si la valeur du champ est vide (par exemple, si la requête n'inclut pas l'en-tête spécifié), la règle ne s'applique pas et le résultat de la correspondance est false.
Champs pris en charge :
En-tête :
http.request.headers["example"]IP client :
ip.srcChaîne de requête URI :
http.request.uri.args["example"]Horodatage de la requête :
http.request.timestamp.sec
Exemples :
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
Vérifie si la valeur de la requête commence par la chaîne spécifiée.
Nom de l'opérateur :
Starts withType de valeur :
String-
Exemple :
(starts_with(http.host, "blog"))
Autres opérateurs
lower
Convertit la valeur de la requête en minuscules pour une correspondance insensible à la casse.
Nom de l'opérateur :
Case-insensitiveType de valeur :
String-
Exemple :
(lower(http.request.uri))
Opérateurs logiques
Les opérateurs logiques combinent plusieurs expressions en une expression composite.
and
Renvoie vrai uniquement lorsque toutes les expressions combinées sont vraies.
Nom de l'opérateur :
Logical AND-
Exemple :
((http.host eq "www.example.com") and (ip.geoip.country eq "CN"))
not
Inverse le résultat d'une expression, transformant vrai en faux et inversement.
Nom de l'opérateur :
Logical NOT-
Exemple :
not (http.host eq "www.example.com")
or
Renvoie vrai si l'une des expressions combinées est vraie.
Nom de l'opérateur :
Logical OR-
Exemple :
((http.host eq "www.example.com") or (ip.geoip.country eq "CN"))
Symboles de regroupement
Utilisez les parenthèses ( et ) pour regrouper des parties d'expression et contrôler l'ordre d'évaluation.
Les symboles de regroupement sont pris en charge dans l'éditeur d'expressions et l'API ESA, mais pas dans le générateur d'expressions.
Exemple d'expression imbriquée :
(http.host eq "www.example.com" and ((http.referer in {"download.example.com"}) or (http.referer in {"image.example.com"})))