

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

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

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

# 使用大小约束条件
<a name="classic-web-acl-size-conditions"></a>

**警告**  
AWS WAF Classic 正在经历一个有计划的 end-of-life流程。有关您所在地区的里程碑和日期，请参阅您的 AWS Health 控制面板。

**注意**  
这是 **AWS WAF Classic** 文档。只有在 2019 年 11 月 AWS WAF 之前创建了诸如规则和 Web ACLs 之类的 AWS WAF 资源，并且尚未将其迁移到最新版本时，才应使用此版本。要迁移您的网站 ACLs，请参阅[将您的 AWS WAF 经典资源迁移到 AWS WAF](waf-migrating-from-classic.md)。  
**有关的最新版本 AWS WAF，**请参阅[AWS WAF](waf-chapter.md)。

如果要基于请求指定部分的长度允许或阻止 web 请求，请创建一个或多个大小约束条件。大小限制条件用于标识您希望 C AWS WAF lassic 查看的 Web 请求部分、您希望 C AWS WAF lassic 查找的字节数以及运算符，例如大于 (>) 或小于 (<)。例如，您可以使用大小约束条件来查找长度超过 100 个字节的查询字符串。在这个过程中的稍后阶段，在创建 web ACL 时，需要指定是基于这些设置允许还是阻止请求。

请注意，如果您将 AWS WAF Classic 配置为检查请求正文（例如，通过在正文中搜索指定字符串），则 AWS WAF Classic 仅检查前 8192 字节 (8 KB)。如果 web 请求的请求正文不会超过 8192 个字节，则可以创建一个大小约束条件并阻止请求正文大于 8192 个字节的请求。

**Topics**
+ [创建大小约束条件](#classic-web-acl-size-conditions-creating)
+ [创建或编辑大小约束条件时指定的值](#classic-web-acl-size-conditions-values)
+ [在大小约束条件中添加和删除筛选条件](#classic-web-acl-size-conditions-editing)
+ [删除大小约束条件](#classic-web-acl-size-conditions-deleting)

## 创建大小约束条件
<a name="classic-web-acl-size-conditions-creating"></a>

创建大小限制条件时，您可以指定过滤器来标识希望 C AWS WAF lassic 评估长度的 Web 请求部分。您可以将多个筛选条件添加到大小约束条件，也可以为每个筛选条件创建单独的条件。以下是每种配置如何影响 AWS WAF 经典行为：
+ **每个大小限制条件一个过滤器**-当您将单独的大小限制条件添加到规则并将该规则添加到 Web ACL 时，Web 请求必须符合所有条件，Cl AWS WAF assic 才能根据条件允许或阻止请求。

  例如，假设您创建两个条件。一个条件与查询字符串大于 100 个字节的 web 请求匹配。另一个条件与请求正文大于 1024 个字节的 web 请求匹配。当您将两个条件添加到同一个规则并将该规则添加到 Web ACL 时，Cl AWS WAF assic 仅在两个条件都为真时才允许或阻止请求。
+ **每个大小限制条件不止一个过滤器**-当您将包含多个过滤器的大小限制条件添加到规则并将该规则添加到 Web ACL 时，Web 请求只需要匹配大小限制条件中的一个过滤器，Cl AWS WAF assic 即可根据该条件允许或阻止请求。

  假设您创建了一个而不是两个条件，并且其中一个条件包含与前面示例相同的两个筛选条件。 AWS WAF 如果查询字符串大于 100 字节或请求正文大于 1024 字节，Classic 将允许或阻止请求。

**注意**  
向规则添加大小限制条件时，还可以将 Cl AWS WAF assic 配置为允许或阻止与条件中的值*不*匹配的 Web 请求。<a name="classic-web-acl-size-conditions-creating-procedure"></a>

**创建大小约束条件**

1. 登录 AWS 管理控制台 并打开 AWS WAF 控制台，网址为[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/)。

   如果您在导航窗格中看到 “**切换到 AWS WAF 经典版**”，请将其选中。

1. 在导航窗格中，选择**大小约束**。

1. 选择 **创建条件**。

1. 指定适用的筛选条件设置。有关更多信息，请参阅 [创建或编辑大小约束条件时指定的值](#classic-web-acl-size-conditions-values)。

1. 选择 **再添加一个筛选条件**。

1. 如果要添加其他筛选条件，请重复步骤 4 和 5。

1. 添加完筛选器后，选择**创建大小约束条件**。

## 创建或编辑大小约束条件时指定的值
<a name="classic-web-acl-size-conditions-values"></a>

创建或更新大小约束条件时，需要指定以下值：

**Name**  
为大小约束条件输入名称。  
该名称只能包含字母数字字符（A-Z、a-z、0-9）或以下特殊字符：\$1-\$1"\$1`\$1\$1\$1,./。条件的名称在创建后不可更改。

**Part of the request to filter on**  
在每个 Web 请求中，选择您希望 AWS WAF Classic 评估长度的部分：    
**标题**  
指定的请求标头，例如 `User-Agent` 或 `Referer` 标头。如果选择 **Header**，则在 **Header** 字段中指定标头的名称。  
**HTTP method**  
HTTP 方法，指示请求要求源执行的操作的类型。CloudFront 支持以下方法：`DELETE`、`GET`、`HEAD`、`OPTIONS`、`PATCH`、`POST` 和 `PUT`。  
**查询字符串**  
URL 中在 `?` 字符之后出现的部分 (如果有)。  
**URI**  
请求的 URI 路径，用于标识资源，例如 `/images/daily-ad.jpg`。这不包括 URI 的查询字符串或片段组件。有关信息，请参阅[统一资源标识符 (URI)：一般语法](https://tools.ietf.org/html/rfc3986#section-3.3)。  
除非指定了**转换**，否则不会对 URI 进行标准化，而是像在请求中从客户端 AWS 收到的那样对其进行检查。**转换** 将按指定方式重新设置 URI 的格式。  
**Body**  
请求中包含要作为 HTTP 请求正文发送到 web 服务器的任何附加数据（如表单数据）的部分。  
**单一查询参数（仅限值）**  
您已定义为查询字符串的一部分的任何参数。例如，如果网址是 “www.xyz.com？UserName=abc& SalesRegion =seattle”，则可以向或参数添加过滤器。*UserName*SalesRegion**  
如果您选择 **单一查询参数（仅限值）**，您还将指定 **查询参数名称**。这是您要检查的查询字符串中的参数，例如*UserName*。**查询参数名称** 的最大长度为 30 个字符。**查询参数名称** 不区分大小写。例如，如果您指定*UserName*为**查询参数名称**，它将匹配的所有变体 *UserName*，例如*用户名*和*我们ERName*。  
**所有查询参数（仅限值）**  
与**单一查询参数（仅限值）**类似，但C AWS WAF lassic不会检查单个参数的值，而是检查查询字符串中所有参数的值以了解大小约束。例如，如果网址为 “www.xyz.com？UserName=abc& SalesRegion =seattle”，并且您选择了**所有查询参数（仅限值）**，则如果超过指定大小，则 C AWS WAF lassic 将触发匹配值的匹配。*UserName*SalesRegion**

**Header (仅当“Part of the request to filter on”是“Header”时)**  
如果您为**要筛选的请求的一部分**选择了**标头**，请从常用标头列表中选择标头，或者键入希望 C AWS WAF lassic 评估其长度的标头的名称。

**比较运算符**  
选择您希望 AWS WAF Classic 如何根据您为 “**大小**” 指定的值来评估 Web 请求中查询字符串的长度。  
例如，如果您为**比较运算符**选择**大于**，在 “大**小**” 中键入 **100**，则 AWS WAF Classic 会评估长度超过 100 字节的查询字符串的 Web 请求。

**Size**  
输入您希望 C AWS WAF lassic 在查询字符串中监视的长度（以字节为单位）。  
如果选择 **URI** 作为 **Part of the request to filter on** 的值，则 URI 中的 **/** 算作一个字符。例如，URI 路径 `/logo.jpg` 的长度是 9 个字符。

**转换**  
在 C AWS WAF lassic 评估请求中指定部分的长度之前，转换会重新格式化 Web 请求。这消除了攻击者为了绕过 C AWS WAF lassic 而在 Web 请求中使用的一些不寻常的格式。  
如果您为**请求的一部分选择**正文**进行筛选**，则无法将 C AWS WAF lassic 配置为执行转换，因为只有前 8192 字节会被转发以供检查。但是，您仍然可以基于 HTTP 请求正文的大小筛选流量，并将转换指定为**无**。（AWS WAF Classic 从请求标头中获取正文的长度。）
您只能指定一个类型的文本转换。  
转换可以执行以下操作：    
**无**  
AWS WAF 在检查长度之前，Classic 不会对 Web 请求执行任何文本转换。  
**转换为小写形式**  
AWS WAF 经典版将大写字母 (A-Z) 转换为小写字母 (a-z)。  
**HTML decode**  
AWS WAF Classic 用未编码的字符替换 HTML 编码的字符：  
+ 将 `&quot;` 替换为 `&`
+ 将 `&nbsp;` 替换为不间断空格
+ 将 `&lt;` 替换为 `<`
+ 将 `&gt;` 替换为 `>`
+ 将以十六进制格式表示的字符 `&#xhhhh;` 替换为对应字符
+ 将以十进制格式表示的字符 `&#nnnn;` 替换为对应字符  
**规范化空格**  
AWS WAF Classic 将以下字符替换为空格字符（十进制 32）：  
+ \$1f，换页符，十进制 12
+ \$1t，制表符，十进制 9
+ \$1n，换行符，十进制 10
+ \$1r，回车符，十进制 13
+ \$1v，垂直制表符，十进制 11
+ 不间断空格，十进制 160
此外，此选项将多个空格替换为一个空格。  
**Simplify command line**  
对于包含操作系统命令行命令的请求，使用此选项可执行以下转换：  
+ 删除以下字符：\$1 " ' ^
+ 删除以下字符之前的空格：/ (
+ 将以下字符替换为空格：, ;
+ 将多个空格替换为一个空格
+ 将大写字母 (A-Z) 转换为小写字母 (a-z)  
**URL 解码**  
解码 URL 编码的请求。

## 在大小约束条件中添加和删除筛选条件
<a name="classic-web-acl-size-conditions-editing"></a>

您可以在大小约束条件中添加或删除筛选条件。要更改筛选条件，请添加一个新筛选条件并删除旧条件。<a name="classic-web-acl-size-conditions-editing-procedure"></a>

**在大小约束条件中添加或删除筛选条件**

1. 登录 AWS 管理控制台 并打开 AWS WAF 控制台，网址为[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/)。

   如果您在导航窗格中看到 “**切换到 AWS WAF 经典版**”，请将其选中。

1. 在导航窗格中，选择 **Size constraint**。

1. 选择要在其中添加或删除筛选条件的条件。

1. 要添加筛选条件，请执行以下步骤：

   1. 选择 **添加筛选条件**。

   1. 指定适用的筛选条件设置。有关更多信息，请参阅 [创建或编辑大小约束条件时指定的值](#classic-web-acl-size-conditions-values)。

   1. 选择**添加**。

1. 要删除筛选条件，请执行以下步骤：

   1. 选择要删除的筛选条件。

   1. 选择**删除筛选器**。

## 删除大小约束条件
<a name="classic-web-acl-size-conditions-deleting"></a>

如果要删除某个大小约束条件，需要先删除该条件中的所有筛选条件，然后从使用该条件的所有规则中将其删除，如以下过程中所述。<a name="classic-web-acl-size-conditions-deleting-procedure"></a>

**删除大小约束条件**

1. 登录 AWS 管理控制台 并打开 AWS WAF 控制台，网址为[https://console.aws.amazon.com/wafv2/](https://console.aws.amazon.com/wafv2/)。

   如果您在导航窗格中看到 “**切换到 AWS WAF 经典版**”，请将其选中。

1. 在导航窗格中，选择**大小约束**。

1. 在 **Size constraint conditions** 窗格中，选择要删除的大小限制条件。

1. 在右窗格中，选择**关联的规则**选项卡。

   如果使用此大小约束条件的规则的列表为空，请转到步骤 6。如果列表中包含任何规则，则记下这些规则，然后继续执行步骤 5。

1. 要从使用某个大小约束条件的规则中将其删除，请执行以下步骤：

   1. 在导航窗格中，选择**规则**。

   1. 选择使用要删除的大小约束条件的规则的名称。

   1. 在右窗格中，选择要从规则中删除的大小约束条件，然后选择**删除所选条件**。

   1. 对使用要删除的大小约束条件的所有其余规则重复步骤 b 和 c。

   1. 在导航窗格中，选择 **Size constraint**。

   1. 在 **Size constraint conditions** 窗格中，选择要删除的大小限制条件。

1. 选择**删除**删除所选条件。