本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
阻止没有有效令牌的请求
当您使用Amazon托管规则组AWSManagedRulesATPRuleSet和时AWSManagedRulesBotControlRuleSet,规则组会调用Amazon WAF令牌管理来评估 Web 请求中Amazon令牌的状态并相应地对其进行标记。
注意
令牌标签仅适用于您使用这两个托管规则组之一进行评估的 Web 请求。
Amazon WAF在检查 Web 请求的令牌和质询时间戳时应用以下标签之一。 Amazon WAF不添加关于 CAPTCHA 时间戳状态的标签。
-
awswaf:managed:token:accepted— 请求令牌存在且具有未过期的质询时间戳。 -
awswaf:managed:token:rejected— 请求令牌存在但已损坏或质询时间戳已过期。 -
awswaf:managed:token:absent— 请求没有令牌。
区AWSManagedRulesATPRuleSet块请求带有awswaf:managed:token:rejected标签。在客户发送了五个没有被接受的代币的请求后,他们会向他们提出质AWSManagedRulesBotControlRuleSet疑。有关规则组的详细信息,请参阅Amazon WAF欺诈控制账户收购预防 (ATP) 规则组和Amazon WAF机器人控制规则组。
Bot Control 规则组不会阻止带有被拒绝令牌的请求,也没有一个规则组阻止缺少令牌的单个请求。如果请求未被规则组中的其他规则阻止,则可以退出规则组评估并继续由 Web ACL 进行评估。
要阻止所有丢失令牌或令牌被拒绝的请求,请添加一条在托管规则组之后立即运行的规则,以捕获和阻止规则组未为您处理的请求。
以下是使用 ATP 托管规则组的 Web ACL 的 JSON 列表示例。Web ACL 添加了捕获和处理awswaf:managed:token:absent标签的规则。该规则将其评估范围缩小到发送到登录端点的 Web 请求,以匹配 ATP 规则组的范围。添加的规则以粗体列出。
{ "Name": "exampleWebACL", "Id": "55555555-6666-7777-8888-999999999999", "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/webacl/exampleWebACL/55555555-4444-3333-2222-111111111111", "DefaultAction": { "Allow": {} }, "Description": "", "Rules": [ { "Name": "AWS-AWSManagedRulesATPRuleSet", "Priority": 1, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesATPRuleSet", "ManagedRuleGroupConfigs": [ { "AWSManagedRulesATPRuleSet": { "LoginPath": "/web/login", "RequestInspection": { "PayloadType": "JSON", "UsernameField": { "Identifier": "/form/username" }, "PasswordField": { "Identifier": "/form/password" } }, "ResponseInspection": { "StatusCode": { "SuccessCodes": [ 200 ], "FailureCodes": [ 401, 403, 500 ] } } } } ] } }, "OverrideAction": { "None": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AWS-AWSManagedRulesATPRuleSet" } }, { "Name": "RequireTokenForLogins", "Priority": 2, "Statement": { "AndStatement": { "Statements": [ { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:token:absent" } } }, { "ByteMatchStatement": { "SearchString": "/web/login", "FieldToMatch": { "UriPath": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "STARTS_WITH" } }, { "ByteMatchStatement": { "SearchString": "POST", "FieldToMatch": { "Method": {} }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "EXACTLY" } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "RequireTokenForLogins" } } ], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "exampleWebACL" }, "Capacity": 51, "ManagedByFirewallManager": false, "LabelNamespace": "awswaf:111111111111:webacl:exampleWebACL:" }