

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

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

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

# AWS WAF 规则
<a name="waf-rules"></a>

本节解释了什么是 AWS WAF 规则及其工作原理。

 AWS WAF 规则定义了如何检查 HTTP (S) Web 请求以及当请求符合检查标准时要采取的操作。规则只能在规则组或保护包（web ACL）的上下文中进行定义。

规则本身并不存在。 AWS WAF 它们不是 AWS 资源，也没有 Amazon 资源名称 (ARNs)。您可以在规则组或定义规则的保护包（web ACL）中按名称访问规则。您可以使用包含规则的规则组或保护包 (Web ACL ACLs) 的 JSON 视图来管理规则并将其复制到其他保护包 (Web ACL)。您也可以通过 AWS WAF 控制台规则生成器对其进行管理，该生成器可用于保护包 (Web ACLs) 和规则组。

**规则名称**  
每条规则都需要一个名称。避免使用以 `AWS` 开头的名称和用于其他服务为您管理的规则组或规则的名称。请参阅[识别其他服务提供的规则组](waf-service-owned-rule-groups.md)。

**注意**  
如果您更改了规则的名称，并且希望该规则的指标名称反映更改，则还必须更新该指标名称。 AWS WAF 当您更改规则名称时，不会自动更新规则的指标名称。在控制台中编辑规则时，您可以使用规则 JSON 编辑器更改指标名称。您还可以通过 APIs 和更改用于定义保护包 (Web ACL) 或规则组的任何 JSON 列表中的名称。

**规则语句**  
每条规则还需要一个规则语句，用于定义规则如何检查 web 请求。规则语句可能包含任何深度的其他嵌套语句，具体取决于规则和语句类型。一些规则语句采用一组条件。例如，您可以在 IP 条件中指定最多 1 万个 IP 地址或 IP 地址范围。

您可以定义用于检查条件的规则，如下所示：
+ 可能是恶意的脚本。攻击者会嵌入可以利用 web 应用程序漏洞的脚本。这称为跨站脚本攻击（XSS）。
+ 请求源自的 IP 地址或地址范围。
+ 请求源自的国家/地区或地理位置。
+ 请求的指定部分的长度（如查询字符串）。
+ 可能是恶意的 SQL 代码。攻击者会尝试通过在 web 请求中嵌入恶意 SQL 代码从数据库提取数据。这称为 SQL 注入。
+ 请求中出现的字符串，例如，在 `User-Agent` 标头中出现的值或是在查询字符串中出现的文本字符串。您还可以使用正则表达式（regex）指定这些字符串。
+ 保护包（web ACL）中先前的规则添加了到请求中的标签。

除了具有 Web 请求检查标准的语句（如前面的列表中的语句）之外，还 AWS WAF 支持`AND``OR`、和的逻辑语句`NOT`，用于合并规则中的语句。

例如，根据您最近发现的攻击者请求，您可以创建一条规则，其逻辑 `AND` 语句由以下嵌套语句组合而成：
+ 请求来自 192.0.2.44。
+ 请求在 `User-Agent` 标头中包含值 `BadBot`。
+ 请求表现为在查询字符串中包含类似 SQL 的代码。

在这种情况下，web 请求需要匹配所有语句才能匹配顶级 `AND`。

**Topics**
+ [在中使用规则操作 AWS WAF](waf-rule-action.md)
+ [在中使用规则语句 AWS WAF](waf-rule-statements.md)
+ [在中使用匹配规则语句 AWS WAF](waf-rule-statements-match.md)
+ [在中使用逻辑规则语句 AWS WAF](waf-rule-statements-logical.md)
+ [在中使用基于费率的规则语句 AWS WAF](waf-rule-statement-type-rate-based.md)
+ [在中使用规则组规则语句 AWS WAF](waf-rule-statements-rule-group.md)