阻止没有有效 Amazon WAF 令牌的请求 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

阻止没有有效 Amazon WAF 令牌的请求

本节介绍如何阻止在使用 Amazon WAF 移动 SDK 时缺少令牌的登录请求。

当您使用智能威胁 Amazon 托管规则组AWSManagedRulesACFPRuleSetAWSManagedRulesATPRuleSetAWSManagedRulesBotControlRuleSet、和时,规则组会调用 Amazon WAF 令牌管理来评估 Web 请求令牌的状态并相应地标记请求。

注意

令牌标签仅适用于您使用其中一个托管规则组评估的 Web 请求。

有关令牌管理应用的标签的信息,请参阅前面的部分 中的代币标签类型 Amazon WAF

然后,智能威胁缓解托管规则组按如下方式处理令牌要求:

  • AWSManagedRulesACFPRuleSetAllRequests规则配置为运行 Challenge 对所有请求采取行动,有效地阻止任何没有accepted令牌标签的请求。

  • AWSManagedRulesATPRuleSet 会阻止带有 rejected 令牌标签的请求,但不会阻止带有 absent 令牌标签的请求。

  • 在客户端发送五个没有 accepted 令牌标签的请求后,AWSManagedRulesBotControlRuleSet 目标保护级别会向他们提出质询。它不会阻止没有有效令牌的单个请求。规则组的通用保护级别不管理令牌要求。

有关智能威胁规则组的其他详细信息,请参阅 Amazon WAF 欺诈控制账户创建防作弊 (ACFP) 规则组Amazon WAF 防欺诈控制账户盗用 (ATP) 规则组Amazon WAF 机器人控制规则组

使用机器人控制功能或 ATP 托管规则组时阻止缺少令牌的请求

使用机器人控制功能和 ATP 规则组时,没有有效令牌的请求可以退出规则组评估并继续由 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, "RetrofittedByFirewallManager": false, "LabelNamespace": "awswaf:111111111111:webacl:exampleWebACL:" }