介绍 AWS WAF 的全新控制台体验
现在,您可以使用更新后的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息,请参阅 使用更新的控制台体验。
在 AWS WAF 中使用文本转换
本节介绍了如何在检查请求之前提供 AWS WAF 要应用的转换。
在查找模式或设置约束的语句中,您可以提供 AWS WAF 要在检查请求之前应用的转换。转换会重新设置 Web 请求的格式,消除了一些不寻常的格式,可防范攻击者使用它们以试图绕过 AWS WAF。
当您将其与 JSON 正文请求组件选择一起使用时,AWS WAF 会在解析并从 JSON 中提取要检查的元素之后应用您的转换。有关更多信息,请参阅 JSON 正文。
如果提供多个转换,还应当设置 AWS WAF 应用这些转换的顺序。
WCU – 每个文本转换为 10 WCU。
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;和"以相同方式处理。HTML 编码字符
替换为……
""&&<<>> 或者 不间断空格,十进制 160

\n,十进制 10	\t,十进制 9{或者{{|、|或||}或者}}!!##$$&percent;或者%%'\(())*或者**++,,..//::;;==??˜或者˜~−-[或者[[\\\]或者]]&hat;^_或者&underbar;_`或者`` - 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 十六进制数据。例如,AWS WAF 将 (
0x414243) 解码为 (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。这有助于输入规范化,并最大限度地减少非英语语言的误报。