本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
OR规则语句
OR规则语句将嵌套语句与OR逻辑结合在一起,因此其中一个嵌套语句必须匹配才能使OR语句匹配。这需要至少一个嵌套语句。
例如,如果您想阻止来自特定国家/地区或包含特定查询字符串的请求,则可以创建一个OR语句并在其中嵌套该国家/地区的地理匹配语句和查询字符串的字符串匹配语句。
相反,如果您想阻止不是来自特定国家/地区或包含特定查询字符串的请求,则应修改先前的OR语句,将地理匹配语句嵌套在语NOT句内低一级。此级别的嵌套要求您使用 JSON 格式,因为控制台仅支持一个级别的嵌套。
可@@ 嵌套 — 您可以嵌套此语句类型。
WCU-取决于嵌套语句。
在何处查找此规则声明
-
控制台上的@@ 规则生成器-对于 I f 请求,请选择与至少一个语句匹配 (OR),然后填写嵌套语句。
-
API — OrStatement
示例
以下清单显示了如何使用合并另外两个语句。OR如果任一嵌套OR语句匹配,则该语句为匹配。
{ "Name": "neitherOfTwo", "Priority": 1, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "neitherOfTwo" }, "Statement": { "OrStatement": { "Statements": [ { "GeoMatchStatement": { "CountryCodes": [ "CA" ] } }, { "IPSetReferenceStatement": { "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777" } } ] } } }
使用控制台规则可视化编辑器,您可以将大多数可嵌套语句嵌套在逻辑规则语句下,但不能使用可视化编辑器嵌套OR或AND语句。要配置这种类型的嵌套,您需要在 JSON 中提供规则语句。例如,以下 JSON 规则列表包含嵌套在OR语句内的AND语句。
{ "Name": "match_rule", "Priority": 0, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom" } } } }, { "OrStatement": { "Statements": [ { "GeoMatchStatement": { "CountryCodes": [ "JM", "JP" ] } }, { "ByteMatchStatement": { "SearchString": "JCountryString", "FieldToMatch": { "Body": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "CONTAINS" } } ] } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "match_rule" } }