

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

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

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

# 在中使用文本转换 AWS WAF
<a name="waf-rule-statement-transformation"></a>

本节介绍如何在检查请求之前提供 AWS WAF 要应用的转换。

在查找模式或设置约束条件的语句中，您可以在检查请求之前提供 AWS WAF 要应用的转换。转换会重新设置 Web 请求的格式，消除了一些不寻常的格式，可防范攻击者使用它们以试图绕过 AWS WAF。

当您将其与 JSON 正文请求组件选择一起使用时， AWS WAF 会在解析并从 JSON 中提取要检查的元素之后应用您的转换。有关更多信息，请参阅 [JSON 正文](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-json-body)。

如果提供多个转换，还应当设置 AWS WAF 应用这些转换的顺序。

**WCUs**— 每个文本转换为 10 WCUs。

 AWS WAF 控制台和 API 文档还在以下位置为这些设置提供了指导：
+ 控制台上的**规则生成器** – **文本转换**。当您使用请求组件时，可使用此选项。
+ **API 语句内容** – `TextTransformations`文本转换的选项

每个转换列表都显示了控制台和 API 规范，后面是相应描述。

Base64 decode – `BASE64_DECODE`  
AWS WAF 解码一个 Base64 编码的字符串。

Base64 decode extension – `BASE64_DECODE_EXT`  
AWS WAF 解码 Base64 编码的字符串，但使用忽略无效字符的宽容实现。

Command line – `CMD_LINE`  
此选项可减少攻击者可能注入操作系统命令行命令并使用不寻常的格式伪装部分或全部命令的情况。  
使用此选项可执行以下转换：  
+ 删除以下字符：`\ " ' ^`
+ 删除以下字符之前的空格：`/ (`
+ 将以下字符替换为空格：`, ;`
+ 将多个空格替换为一个空格
+ 将大写字母 `A-Z` 转换为小写字母 `a-z`

Compress whitespace – `COMPRESS_WHITE_SPACE`  
AWS WAF 通过将多个空格替换为一个空格并将以下字符替换为空格字符 (ASCII 32) 来压缩空白：  
+ Formfeed (ASCII 12)
+ Tab (ASCII 9)
+ 换行符 (ASCII 10)
+ 回车 (ASCII 13)
+ 垂直制表符 (ASCII 11)
+ 不间断空格 (ASCII 160)

CSS decode – `CSS_DECODE`  
AWS WAF 解码使用 CSS 2.x 转义规则编码的字符。`syndata.html#characters`此函数在解码过程中最多使用两个字节，因此它可以帮助发现使用 CSS 编码而通常不会被编码的 ASCII 字符。它也可用于反规避，规避是反斜杠和非十六进制字符的组合。例如，`javascript` 的 `ja\vascript`。

Escape sequences decode – `ESCAPE_SEQ_DECODE`  
AWS WAF 解码以下 ANSI C 转义序列：`\a`、、`\b`、`\f`、、`\n`、`\r`、`\t`、`\v`、`\\``\?`、（十六进制）`\'``\"`、`\xHH`（八进制）。`\0OOO`无效的编码保留在输出中。

Hex decode – `HEX_DECODE`  
AWS WAF 将一串十六进制字符解码为二进制。

HTML entity decode – `HTML_ENTITY_DECODE`  
AWS WAF 用相应的字符替换以十六进制格式`&#xhhhh;`或十进制格式表示`&#nnnn;`的字符。  
AWS WAF 将以下 HTML 编码的字符替换为未编码的字符。此列表使用小写的 HTML 编码，但处理方式不区分大小写，比如 `&QuOt;` 和 `&quot;` 以相同方式处理。      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/waf/latest/developerguide/waf-rule-statement-transformation.html)

JS decode – `JS_DECODE`  
AWS WAF 解码 JavaScript 转义序列。如果 `\uHHHH` 编码在 `FF01-FF5E` 的全角 ASCII 码范围内，则较高的字节用于检测和调整较低的字节。如果不是，则仅使用较低的字节，将较高的字节归零，从而可能导致信息丢失。

Lowercase – `LOWERCASE`  
AWS WAF 将大写字母 (A-Z) 转换为小写字母 (a-z)。

MD5 – `MD5`  
AWS WAF 根据输入中的数据计算 MD5 哈希值。计算的哈希是原始二进制形式。

None – `NONE`  
AWS WAF 检查收到的 Web 请求，不进行任何文本转换。

Normalize path – `NORMALIZE_PATH`  
AWS WAF 通过删除不在输入开头的多个斜杠、目录自引用和目录反向引用来规范化输入字符串。

Normalize path Windows – `NORMALIZE_PATH_WIN`  
AWS WAF 将反斜杠字符转换为正斜杠，然后使用转换处理生成的字符串。`NORMALIZE_PATH`

Remove nulls – `REMOVE_NULLS`  
AWS WAF 从输入中移除所有`NULL`字节。

Replace comments – `REPLACE_COMMENTS`  
AWS WAF 将每次出现的 C 风格注释 (/\*... \*/) 替换为单个空格。它不会压缩连续出现的多个事件。它会将未终止的注释替换为空格 (ASCII 0x20)。它不会更改独立终止的注释 (\*/)。

Replace nulls – `REPLACE_NULLS`  
AWS WAF 用空格`NULL`字符 (ASCII 0x20) 替换输入中的每个字节。

SQL hex decode – `SQL_HEX_DECODE`  
AWS WAF 解码 SQL 十六进制数据。例如，将 (`0x414243`) AWS WAF 解码为 (`ABC`)。

URL decode – `URL_DECODE`  
AWS WAF 解码 URL 编码的值。

URL decode Unicode – `URL_DECODE_UNI`  
与 `URL_DECODE` 类似，但支持 Microsoft 特定的 `%u` 编码。如果代码在 `FF01-FF5E` 的全角 ASCII 码范围内，则较高的字节用于检测和调整较低的字节。否则，仅使用较低的字节，将较高的字节归零。

UTF8 to Unicode – `UTF8_TO_UNICODE`  
AWS WAF 将所有 UTF-8 字符序列转换为 Unicode。这有助于输入规范化，并最大限度地减少非英语语言的误报。