OR 规则语句
OR 规则语句将嵌套语句与 OR 逻辑相结合,因此其中一个嵌套语句必须匹配 OR 语句才能进行匹配。这至少需要两个嵌套语句。
例如,如果您要阻止来自特定国家/地区或包含特定查询字符串的请求,则可以创建一个 OR 语句,并在其中嵌入该国家/地区的地理匹配语句和查询字符串的字符串匹配语句。
相反,如果您想阻止不是来自特定国家/地区或包含特定查询字符串的请求,则可以修改之前的 OR 语句,将地理匹配语句嵌套在 NOT 语句中更低的一个级别。此级别的嵌套要求您使用 JSON 格式,因为控制台仅支持一个级别的嵌套。
规则语句特征
嵌套 – 您可以嵌套此语句类型。
WCU – 取决于嵌套语句。
在何处查找规则语句
-
控制台上的规则生成器 – 对于如果有请求,选择至少匹配其中一条语句 (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 规则列表包括嵌套在 AND 语句中的 OR 语句。
{ "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" } }