文本转换 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

文本转换

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

当您将其与 JSON 正文请求组件选择一起使用时, Amazon WAF 会在解析并从 JSON 中提取要检查的元素之后应用您的转换。有关更多信息,请参阅 JSON 正文

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

WCU – 每个文本转换为 10 WCU。

Amazon WAF 控制台和 API 文档还在以下位置为这些设置提供了指导:

  • 控制台上的规则生成器文本转换。当您使用请求组件时,可使用此选项。

  • API 语句内容TextTransformations

文本转换的选项

每个转换清单都显示了控制台和 API 规范,后面是描述。

Base64 decode – BASE64_DECODE

Amazon WAF 解码一个 Base64 编码的字符串。

Base64 decode extension – BASE64_DECODE_EXT

Amazon WAF 解码 Base64 编码的字符串,但使用忽略无效字符的宽容实现。

Command line – CMD_LINE

此选项可以缓解攻击者可能注入操作系统命令行命令并使用不寻常的格式来掩盖部分或全部命令的情况。

使用此选项可执行以下转换:

  • 删除以下字符:\ " ' ^

  • 删除以下字符之前的空格:/ (

  • 将以下字符替换为空格:, ;

  • 将多个空格替换为一个空格

  • 将大写字母 A-Z 转换为小写字母 a-z

Compress whitespace – COMPRESS_WHITE_SPACE

Amazon WAF 通过将多个空格替换为一个空格并将以下字符替换为空格字符 (ASCII 32) 来压缩空白:

  • Formfeed (ASCII 12)

  • Tab (ASCII 9)

  • 换行符 (ASCII 10)

  • 回车 (ASCII 13)

  • 垂直制表符 (ASCII 11)

  • 不间断空格 (ASCII 160)

CSS decode – CSS_DECODE

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

Escape sequences decode – ESCAPE_SEQ_DECODE

Amazon WAF 解码以下 ANSI C 转义序列:\a、、\b\f、、\n\r\t\v\\\?、(十六进制)\'\"\xHH(八进制)。\0OOO无效的编码保留在输出中。

Hex decode – HEX_DECODE

Amazon WAF 将一串十六进制字符解码为二进制。

HTML entity decode – HTML_ENTITY_DECODE

Amazon WAF 用相应的字符替换以十六进制格式&#xhhhh;或十进制格式表示&#nnnn;的字符。

Amazon WAF 将以下 HTML 编码的字符替换为未编码的字符。此列表使用小写的 HTML 编码,但处理方式不区分大小写,"因此处理方式相同。&QuOt;

HTML 编码字符

替换为……

"

"

&

&

<

<

&gt;

>

&nbsp;&NonBreakingSpace;

不间断空格,十进制 160

&NewLine;

\n,十进制 10

&Tab;

\t,十进制 9

&lcub;&lbrace;

{

&verbar;&vert;&VerticalLine;

|

&rcub;&rbrace;

}

&excl;

!

&num;

#

&dollar;

$

&percent;&percnt;

%

&apos;

\

&lpar;

(

&rpar;

)

&ast;&midast;

*

&plus;

+

&comma;

,

&period;

.

&sol;

/

&colon;

:

&semi;

;

&equals;

=

&quest;

?

&tilde;&DiacriticalTilde;

~

&minus;

-

&lsqb;&lbrack;

[

&bsol;

\\

&rsqb;&rbrack;

]

&hat;

^

&lowbar;&underbar;

_

&grave;&DiacriticalGrave;

`

JS decode – JS_DECODE

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

Lowercase – LOWERCASE

Amazon WAF 将大写字母 (A-Z) 转换为小写字母 (a-z)。

MD5 – MD5

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

None – NONE

Amazon WAF 检查收到的 Web 请求,不进行任何文本转换。

Normalize path – NORMALIZE_PATH

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

Normalize path Windows – NORMALIZE_PATH_WIN

Amazon WAF 将反斜杠字符转换为正斜杠,然后使用转换处理生成的字符串。NORMALIZE_PATH

Remove nulls – REMOVE_NULLS

Amazon WAF 从输入中移除所有NULL字节。

Replace comments – REPLACE_COMMENTS

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

Replace nulls – REPLACE_NULLS

Amazon WAF 用空格NULL字符 (ASCII 0x20) 替换输入中的每个字节。

SQL hex decode – SQL_HEX_DECODE

Amazon WAF 解码 SQL 十六进制数据。例如,将 (0x414243) Amazon WAF 解码为 (ABC)。

URL decode – URL_DECODE

Amazon WAF 解码 URL 编码的值。

URL decode Unicode – URL_DECODE_UNI

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

UTF8 to Unicode – UTF8_TO_UNICODE

Amazon WAF 将所有 UTF-8 字符序列转换为 Unicode。这有助于标准化输入,并最大限度地减少非英语语言的误报和假阴性。