本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
屏蔽无效的请求 AWS WAF 令牌
本节介绍如何阻止在使用时缺少令牌的登录请求 AWS WAF 移动SDK。
当你使用智能威胁时 AWS 托管规则组AWSManagedRulesACFPRuleSet
和AWSManagedRulesBotControlRuleSet
规则组调用 AWSManagedRulesATPRuleSet
AWS WAF 令牌管理,用于评估 Web 请求令牌的状态并相应地标记请求。
注意
令牌标签仅适用于您使用其中一个托管规则组评估的 Web 请求。
有关令牌管理应用的标签的信息,请参阅前面的部分 中的代币标签类型 AWS WAF。
然后,智能威胁缓解托管规则组按如下方式处理令牌要求:
-
该
AWSManagedRulesACFPRuleSet
AllRequests
规则配置为运行 Challenge 对所有请求采取行动,有效地阻止任何没有accepted
令牌标签的请求。 -
AWSManagedRulesATPRuleSet
会阻止带有rejected
令牌标签的请求,但不会阻止带有absent
令牌标签的请求。 -
在客户端发送五个没有
accepted
令牌标签的请求后,AWSManagedRulesBotControlRuleSet
目标保护级别会向他们提出质询。它不会阻止没有有效令牌的单个请求。规则组的通用保护级别不管理令牌要求。
有关智能威胁规则组的其他详细信息,请参阅 AWS WAF Fraud Control 账户创建防欺诈 (ACFP) 规则组、AWS WAF Fraud Control 账户盗用预防 (ATP) 规则组 和 AWS WAF 机器人控制功能规则组。
使用 Bot Control 或ATP托管规则组时阻止缺少令牌的请求
借助 Bot Control 和ATP规则组,没有有效令牌的请求可以退出规则组评估并继续由 Web 进行评估ACL。
要阻止所有缺少令牌或令牌被拒绝的请求,请添加一条规则,使其在托管规则组之后立即运行,以捕获并阻止该规则组未处理的请求。
以下是使用ATP托管规则组ACL的网站的示例JSON列表。网络添加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:" }