在中处理超大的 Web 请求组件 AWS WAF - AWS WAFAWS Firewall Manager、和 AWS Shield Advanced

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

在中处理超大的 Web 请求组件 AWS WAF

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

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

组件检查大小限制

组件检查尺寸限制如下:

  • BodyJSON 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。有关更多信息,请参阅 管理车身检查的大小限制

  • Headers— 最多 AWS WAF 可以检查请求标头的前 8 KB(8,192 字节),最多可以检查前 200 个标头。在达到第一个限制之前 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 托管规则规则组列表。有关其他规则组的信息,请咨询您的规则组提供程序。

管理 Web ACL 中超大组件的指导原则

处理 Web ACL 中超大组件的方式可能取决于多种因素,例如请求组件内容的预期大小、Web ACL 的默认请求处理以及 Web ACL 中的其他规则如何匹配和处理请求。

管理超大 Web 请求组件的一般准则如下:

  • 如果您需要允许某些包含超大组件内容的请求,请添加规则以明确仅允许这些请求。确定这些规则的优先级,使其在 Web ACL 中检查相同组件类型的任何其他规则之前运行。使用这种方法,您将无法使用 AWS WAF 来检查允许传递给受保护资源的超大组件的全部内容。

  • 对于所有其他请求,您可以通过阻止超过限制的请求来防止任何额外的字节通过:

    • 您的规则和规则组 – 在检查有大小限制的组件的规则中,配置超大处理,以便阻止超过限制的请求。例如,如果您的规则阻止具有特定标头内容的请求,请将超大处理设置为与标头内容过大的请求相匹配。或者,如果您的 Web ACL 默认会阻止请求,并且您的规则允许特定的标头内容,则将规则的超大处理配置为不匹配任何标头内容过大的请求。

    • 您不管理的规则组 – 为了防止您不管理的规则组允许超大请求组件,您可以添加一个单独的规则来检查请求组件类型并阻止超出限制的请求。确定该 Web ACL 中规则的优先级,使其在规则组之前运行。例如,在任何正文检查规则在 Web ACL 中运行之前,您可以阻止正文内容过大的请求。以下过程将介绍如何添加此类规则。

添加阻止超大内容的规则
  1. 创建或编辑 Web ACL 时,在规则设置中,选择添加规则添加我自己的规则和规则组规则生成器,然后选择规则可视化编辑器。有关创建或编辑 Web ACL 的指导,请参阅 使用 Web ACL

  2. 输入规则的名称,然后将类型设置保留为常规规则

  3. 将以下匹配设置更改为其默认设置:

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

    2. 对于匹配类型,选择大小大于

    3. 大小中,键入一个至少等于该组件类型的最小大小的数字。对于标题和 Cookie,请键入8192。在 Application Load Balancer 或 AWS AppSync Web ACL 中,对于主体,键入8192。对于 API Gateway CloudFront、Amazon Cognito、App Runner 或 Verified Access Web ACL 中的正文,如果你使用的是默认的正文大小限制,请键入。16384否则,请键入您为 Web ACL 定义的正文大小限制。

    4. 对于超大处理,请选择匹配

  4. 对于操作,选择阻止

  5. 选择 添加规则

  6. 添加规则后,在设置规则优先级页面上,将其移至 Web ACL 中检查相同组件类型的所有规则或规则组上方。这使它具有较低的数字优先级设置,因此 AWS WAF 需要先对其进行评估。有关更多信息,请参阅 Web ACL 中规则和规则组的处理顺序