

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

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

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

# 中的 Web 请求组件过大 AWS WAF
<a name="waf-oversize-request-components"></a>

本节介绍了如何管理在 AWS WAF中检查 Web 请求正文、标头和 Cookie 的大小限制。

AWS WAF 不支持检查 Web 请求组件正文、标头或 Cookie 的超大内容。底层主机服务对转发给 AWS WAF 检查的内容有数量和大小限制。例如，主机服务向发送的标头不超过 200 个 AWS WAF，因此对于包含 205 个标头的 Web 请求， AWS WAF 无法检查最后 5 个标头。

当 AWS WAF 允许 Web 请求继续访问您的受保护资源时，将发送整个 Web 请求，包括超出可以检查的数量和大小限制的任何 AWS WAF 内容。

**组件检查大小限制**  
组件检查尺寸限制如下：
+ **`Body`和 `JSON Body`** — 对于 Application AWS AppSync Load Balancer 和， AWS WAF 可以检查请求正文的前 8 KB。对于 CloudFront，默认情况下，API Gateway、Amazon Cognito、App Runner 和 Verified Access AWS WAF 可以检查前 16 KB，你可以在保护包（Web ACL）配置中将限制提高到 64 KB。有关更多信息，请参阅 [管理人体检查的注意事项 AWS WAF](web-acl-setting-body-inspection-limit.md)。
+ **`Headers`**— 最多 AWS WAF 可以检查请求标头的前 8 KB（8,192 字节），最多可以检查前 200 个标头。在达到第一个限制之前 AWS WAF ，内容可供检查。

  当您检查请求中的所有标头时，这些限制适用。当您检查单个标头时， AWS WAF 可以检查该标头的全部内容，而不受这些大小或数量限制。
+ **`Cookies`**— 最多 AWS WAF 可以检查请求的 cookie 的前 8 KB（8,192 字节），最多可以检查前 200 个 cookie。在达到第一个限制之前 AWS WAF ，内容可供检查。

**规则语句的超大处理选项**  
在编写检查其中一种请求组件类型的规则语句时，您可以指定如何处理超大组件。超大处理 AWS WAF 告诉当规则检查的请求组件超过大小限制时，如何处理 Web 请求。

处理超大组件的选项如下：
+ **Continue**— 根据规则检查标准通常检查请求组件。 AWS WAF 将检查大小限制范围内的请求组件内容。
+ **Match**— 将 Web 请求视为与规则语句相匹配。 AWS WAF 将规则操作应用于请求，而不根据规则的检查标准对其进行评估。
+ **No match**— 如果不根据规则的检查标准进行评估，则将 Web 请求视为与规则声明不匹配。 AWS WAF 继续使用保护包 (Web ACL) 中的其余规则检查 Web 请求，就像对待任何不匹配的规则一样。

在 AWS WAF 控制台中，你需要选择其中一个处理选项。在控制台之外，默认选项为 Continue。

如果您在操作设置为 Block 的规则中使用 Match 选项，则该规则将阻止被检查组件过大的请求。对于任何其他配置，请求的最终处置取决于各种因素，例如保护包（web ACL）中其他规则的配置以及保护包（web ACL）的默认操作设置。

**非您拥有的规则组中的超大处理**  
组件大小和数量限制适用于您在保护包（web ACL）中使用的所有规则。这包括您在托管规则组以及其他账户与您共享的规则组中使用但未管理的任何规则。

当您使用您未管理的规则组时，该规则组可能有一条规则可以检查有限的请求组件，但不会按照您需要的方式处理超大内容。有关 AWS 托管规则如何管理超大尺寸组件的信息，请参阅[AWS 托管规则规则组列表](aws-managed-rule-groups-list.md)。有关其他规则组的信息，请咨询您的规则组提供程序。

**管理保护包（web ACL）中超大组件的指导原则**  
处理保护包（web ACL）中超大组件的方式可能取决于多种因素，例如请求组件内容的预期大小、保护包（web ACL）的默认请求处理以及保护包（web ACL）中的其他规则如何匹配和处理请求。

管理超大 Web 请求组件的一般准则如下：
+ 如果您需要允许某些包含超大组件内容的请求，请添加规则以明确仅允许这些请求。确定这些规则的优先级，使其在保护包（web ACL）中检查相同组件类型的任何其他规则之前运行。使用这种方法，您将无法使用 AWS WAF 来检查允许传递给受保护资源的超大组件的全部内容。
+ 对于所有其他请求，您可以通过阻止超过限制的请求来防止任何额外的字节通过：
  + **您的规则和规则组** – 在检查有大小限制的组件的规则中，配置超大处理，以便阻止超过限制的请求。例如，如果您的规则阻止具有特定标头内容的请求，请将超大处理设置为与标头内容过大的请求相匹配。或者，如果您的保护包（web ACL）默认会阻止请求，并且您的规则允许特定的标头内容，则将规则的超大处理配置为不匹配任何标头内容过大的请求。
  + **您不管理的规则组**：为了防止您不管理的规则组允许超大请求组件，您可以添加一个单独的规则来检查请求组件类型并阻止超出限制的请求。确定保护包（web ACL）中规则的优先级，使其在规则组之前运行。例如，在任何正文检查规则在保护包（web ACL）中运行之前，您可以阻止正文内容过大的请求。以下过程将介绍如何添加此类规则。

## 阻止超大 Web 请求组件
<a name="waf-oversize-request-components-blocking"></a>

可以在保护包（web ACL）中添加一条阻止过大组件请求的规则。

**添加阻止超大内容的规则**

1. 创建或编辑保护包（web ACL）时，在规则设置中，选择**添加规则**、**添加我自己的规则和规则组**、**规则生成器**，然后选择**规则可视化编辑器**。有关创建或编辑保护包（web ACL）的指导，请参阅 [在中查看 Web 流量指标 AWS WAF](web-acl-working-with.md)。

1. 输入规则的名称，然后将**类型**设置保留为**常规规则**。

1. 将以下匹配设置更改为其默认设置：

   1. 在**语句**中，对于**检查**，打开下拉列表并选择所需的 Web 请求组件，即**正文**、**标头**或 **Cookie**。

   1. 对于**匹配类型**，选择**大小大于**。

   1. 在**大小**中，键入一个至少等于该组件类型的最小大小的数字。对于标头和 Cookie，请键入 `8192`。在 Application Load Balancer 或 AWS AppSync 保护包 (Web ACLs) 中，对于主体，键入`8192`。对于 API Gateway、Amazon Cognito、App Runner 或已验证访问保护包（网络 ACLs）中的 CloudFront正文，如果您使用的是默认的主体大小限制，请键入。`16384`否则，请键入您为保护包（web ACL）定义的正文大小限制。

   1. 对于**超大处理**，请选择**匹配**。

1. 对于**操作**，选择**阻止**。

1. 选择**添加规则**。

1. 添加规则后，在**设置规则优先级**页面上，将其移至保护包（web ACL）中检查相同组件类型的所有规则或规则组上方。这使新规则具有较低的数字优先级设置，因此 AWS WAF 需要先对其进行评估。有关更多信息，请参阅 [设置规则优先级](web-acl-processing-order.md)。