

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

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

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

# 字符串匹配规则语句
<a name="waf-rule-statement-type-string-match"></a>

本节介绍了什么是字符串匹配语句及其工作方式。

字符串匹配语句表示您 AWS WAF 要在请求中搜索的字符串、在请求中的位置以及搜索方式。例如，您可以在请求中查找任何查询字符串开头的特定字符串，也可以查找请求 `User-agent` 标头的精确匹配项。字符串通常由可打印 ASCII 字符组成，但您可以使用从十六进制 0x00 到 0xFF (十进制 0 到 255) 的任何字符。

## 规则语句特征
<a name="string-match-characteristics"></a>

**嵌套**：您可以嵌套此语句类型。

**WCUs**— 基本费用取决于您使用的匹配类型。
+ **完全匹配字符串** – 2 
+ **以字符串开头** – 2 
+ **以字符串结尾** – 2 
+ **包含字符串** – 10 
+ **包含单词** – 10 

如果您使用请求组件 **All 查询参数**，请添加 10 WCUs。如果您使用请求组件 **JSON 正文**，则将基本成本增加一倍 WCUs。对于您应用的每个**文本转换**，请添加 10 WCUs。

此语句类型在 web 请求组件上运行，需要以下请求组件设置：
+ **请求组件**：web 请求中要检查的部分，例如查询字符串或正文。
**警告**  
如果您检查请求组件 B **ody**、**JSON 正**文、**Header** **s 或 Cookie**，请阅读有关内容 AWS WAF 可检查数量的限制[中的 Web 请求组件过大 AWS WAF](waf-oversize-request-components.md)。

  有关请求组件的更多信息，请参阅 [在中调整规则语句设置 AWS WAF](waf-rule-statement-fields.md)。
+ **可选的文本转换**-在检查请求组件之前 AWS WAF 要对其执行的转换。例如，您可以将空格转换为小写或标准化空格。如果您指定了多个转换，则按列出的顺序 AWS WAF 处理它们。有关信息，请参阅[在中使用文本转换 AWS WAF](waf-rule-statement-transformation.md)。

此外，此语句需要以下设置：
+ **要匹配的字符**串 — 这是您 AWS WAF 要与指定请求组件进行比较的字符串。字符串通常由可打印 ASCII 字符组成，但您可以使用从十六进制 0x00 到 0xFF (十进制 0 到 255) 的任何字符。
+ **字符串匹配条件**-这表示您 AWS WAF 要执行的搜索类型。
  + **完全匹配字符串** – 字符串和请求组件的值相同。
  + **以字符串开头** – 字符串出现在请求组件的开头。
  + **以字符串结尾** – 字符串出现在请求组件的末尾。
  + **包含字符串** – 该字符串出现在请求组件中的任何位置。
  + **包含词** – 您指定的字符串必须显示在请求组件中。

    对于此选项，指定的字符串必须仅包含字母数字字符或下划线（A-Z、a-z、0-9 或 \$1）。

    请求必须满足以下条件之一：
    + 字符串与请求组件的值精确匹配，如标头的值。
    + 字符串位于请求组件的开头，并且后跟字母数字字符或下划线 (\$1) 之外的字符（例如，`BadBot;`）。
    + 字符串位于请求组件的末尾，并且前面是字母数字字符或下划线 (\$1) 之外的字符，例如，`;BadBot`。
    + 字符串位于请求组件的中间，并且前面和后面是字母数字字符或下划线 (\$1) 之外的字符，例如，`-BadBot;`。

## 在何处查找规则语句
<a name="string-match-where-to-find"></a>
+ 控制台上的**规则生成器** – 对于**匹配类型**，请选择**字符串匹配条件**，然后填写匹配所依据的字符串。
+ **API**：[ByteMatchStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_ByteMatchStatement.html)