ルール式では、比較演算子でリクエストの値を照合し、論理演算子で条件を結合します。
比較演算子
比較演算子は、リクエストの値を、式で指定された値と比較します。
eq
リクエストの値が、指定された値と等しいかどうかをチェックします。
演算子名:
等しい値のタイプ:
文字列例:
(http.host eq "www.example.com")
ne
リクエストの値が、指定された値と等しくないかどうかをチェックします。
演算子名:
等しくない値のタイプ:
文字列例:
(http.host ne "www.example.com")
contains
リクエストの値に、指定された文字列が含まれているかどうかをチェックします。
演算子名:
含む値のタイプ:
文字列例:
(http.host contains "example.com")
not...contains
リクエストの値に、指定された文字列が含まれていないかどうかをチェックします。
演算子名:
含まない値のタイプ:
文字列例:
(not http.host contains "example.com")
matches
リクエストの値が、指定された正規表現 (PCRE 互換) と一致するかどうかをチェックします。
正規表現は、[Premium] と [Enterprise] プランでのみ使用できます。
演算子名:
正規表現に一致する値のタイプ:
文字列例:
(http.host matches "(www|blog)\.example\.com")
not...matches
リクエストの値が、指定された正規表現 (PCRE 互換) と一致しないかどうかをチェックします。
正規表現は、[Premium] と [Enterprise] プランでのみ使用できます。
演算子名:
正規表現に一致しない値のタイプ:
文字列例:
(not http.host matches "(www|blog)\.example\.com")
in
リクエストの値が、指定された配列内のいずれかの値と一致するかどうかをチェックします。$ 記号でリストを参照します。
演算子名:
いずれかに合致値のタイプ:
配列例:
(http.host in {"www.example.com" "blog.example.com"})( ip.src in $<LIST_NAME>)
not...in
リクエストの値が、指定された配列内のいずれの値とも一致しないかどうかをチェックします。$ 記号でリストを参照します。
演算子名:
いずれにも合致しない値のタイプ:
配列例:
(not http.host in {"www.example.com" "blog.example.com"})(not ip.src in $<LIST_NAME>)
starts_with
リクエストの値が、指定された文字列で始まるかどうかをチェックします。
演算子名:
次で始まる値のタイプ:
文字列例:
(starts_with(http.host, "blog"))
not starts_with
リクエストの値が、指定された文字列で始まらないかどうかをチェックします。
演算子名:
次で始まらない値のタイプ:
文字列例:
(not starts_with(http.host, "blog"))
ends_with
リクエストの値が、指定された文字列で終わるかどうかをチェックします。
演算子名:
次で終わる値のタイプ:
文字列例:
(ends_with(http.host, "cn"))
not ends_with
リクエストの値が、指定された文字列で終わらないかどうかをチェックします。
演算子名:
次で終わらない値のタイプ:
文字列例:
(not ends_with(http.host, "cn"))
le
リクエストの値が、指定された数値以下であるかどうかをチェックします。
演算子名:
以下値のタイプ:
整数例:
(ip.geoip.asnum le 45104)
ge
リクエストの値が、指定された数値以上であるかどうかをチェックします。
演算子名:
以上値のタイプ:
整数例:
(ip.geoip.asnum ge 45104)
lt
リクエストの値が、指定された数値より小さいかどうかをチェックします。
演算子名:
より小さい値のタイプ:
整数例:
(ip.geoip.asnum lt 45104)
gt
リクエストの値が、指定された数値より大きいかどうかをチェックします。
演算子名:
より大きい値のタイプ:
整数例:
(ip.geoip.asnum gt 45104)
len eq
リクエストの値の長さが、指定された数値と等しいかどうかをチェックします。
演算子名:
長さが等しい値のタイプ:
文字列例:
(len(http.request.cookies["session"]) eq 330688)
len gt
リクエストの値の長さが、指定された数値より大きいかどうかをチェックします。
演算子名:
長さがより大きい値のタイプ:
文字列例:
(len(http.request.cookies["session"]) gt 330688)
len lt
リクエストの値の長さが、指定された数値より小さいかどうかをチェックします。
演算子名:
長さがより小さい値のタイプ:
文字列例:
(len(http.request.cookies["session"]) lt 330688)
exists
指定されたフィールドまたは属性がリクエストに存在するかどうかをチェックします。
演算子名:
存在する値のタイプ:
文字列例:
(exists(http.request.headers["user-agent"]))
not exists
指定されたフィールドまたは属性がリクエストに存在しないかどうかをチェックします。
演算子名:
存在しない値のタイプ:
文字列例:
(not exists(http.request.headers["user-agent"]))
その他の演算子
lower
大文字と小文字を区別しない照合のために、リクエストの値を小文字に変換します。
演算子名:
大文字と小文字を区別しない値のタイプ:
文字列例:
(lower(http.request.uri))
論理演算子
論理演算子は、複数の式を結合して 複合式 を作成します。
not
式の結果を否定し、true と false を反転させます。
演算子名:
論理 NOT例:
not (http.host eq "www.example.com")
and
結合したすべての式が true の場合にのみ true を返します。
演算子名:
論理 AND例:
((http.host eq "www.example.com") and (ip.geoip.country eq "CN"))
or
結合された式のいずれかが true の場合に true を返します。
演算子名:
論理 OR例:
((http.host eq "www.example.com") or (ip.geoip.country eq "CN"))
グループ化記号
丸かっこ ( と ) で式の部分をグループ化し、評価順序を制御します。
グループ化記号は、式エディターと ESA API でサポートされていますが、式ビルダーではサポートされていません。
ネストされた式の例:
(http.host eq "www.example.com" and ((http.referer in {"download.example.com"}) or (http.referer in {"image.example.com"})))