AWS WAF 中的超大 web 请求组件 - AWS WAF、AWS Firewall Manager、AWS Shield Advanced 和 AWS Shield 网络安全分析器

介绍 AWS WAF 的全新控制台体验

现在,您可以使用更新后的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息,请参阅 使用更新的控制台体验

AWS WAF 中的超大 web 请求组件

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

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

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

组件检查大小限制

组件检查尺寸限制如下:

  • BodyJSON Body:对于应用程序负载均衡器和 AWS AppSync,AWS WAF 可以检查请求正文的前 8 KB 内容。对于 CloudFront、API Gateway、Amazon Cognito、App Runner 和 Verified Access,AWS WAF 默认检查前 16 KB,您可以在保护包(web ACL)配置中将此限制提高至 64 KB。有关更多信息,请参阅 在 AWS WAF 中管理正文检查的注意事项

  • 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)中运行之前,您可以阻止正文内容过大的请求。以下过程将介绍如何添加此类规则。

阻止超大 Web 请求组件

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

添加阻止超大内容的规则
  1. 创建或编辑保护包(web ACL)时,在规则设置中,选择添加规则添加我自己的规则和规则组规则生成器,然后选择规则可视化编辑器。有关创建或编辑保护包(web ACL)的指导,请参阅 在 AWS WAF 中查看 web 流量指标

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

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

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

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

    3. 大小中,键入一个至少等于该组件类型的最小大小的数字。对于标头和 Cookie,请键入 8192。在应用程序负载均衡器 或 AWS AppSync 保护包(web ACL)中,为正文键入 8192。对于 CloudFront、API Gateway、Amazon Cognito、App Runner 或 Verified Access 保护包(web ACL)中的正文,如果使用的是默认正文大小限制,请键入 16384。否则,请键入您为保护包(web ACL)定义的正文大小限制。

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

  4. 对于操作,选择阻止

  5. 选择添加规则

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