

**引入全新的主机体验 Amazon WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 Amazon WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.amazonaws.cn/waf/latest/developerguide/working-with-console.html)。

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

# 阻止没有有效 Amazon WAF 令牌的请求
<a name="waf-tokens-block-missing-tokens"></a>

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

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

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

有关令牌管理应用的标签的信息，请参阅前面的部分 [中的代币标签类型 Amazon WAF](waf-tokens-labeling.md)。

然后，智能威胁缓解托管规则组按如下方式处理令牌要求：
+ 该 `AWSManagedRulesACFPRuleSet` `AllRequests` 规则配置为对所有请求运行 Challenge 操作，从而有效地阻止任何没有 `accepted` 令牌标签的请求。
+ `AWSManagedRulesATPRuleSet` 会阻止带有 `rejected` 令牌标签的请求，但不会阻止带有 `absent` 令牌标签的请求。
+ 在客户端发送五个没有 `accepted` 令牌标签的请求后，`AWSManagedRulesBotControlRuleSet` 目标保护级别会向他们提出质询。它不会阻止没有有效令牌的单个请求。规则组的通用保护级别不管理令牌要求。

有关智能威胁规则组的其他详细信息，请参阅 [Amazon WAF 欺诈控制账户创建防作弊 (ACFP) 规则组](aws-managed-rule-groups-acfp.md)、[Amazon WAF 防欺诈控制账户盗用 (ATP) 规则组](aws-managed-rule-groups-atp.md) 和 [Amazon WAF 机器人控制规则组](aws-managed-rule-groups-bot.md)。

**使用机器人控制功能或 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:"
}
```