引入全新的主机体验 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-encoded 字符串。
- Base64 decode extension –
BASE64_DECODE_EXT -
AWS WAF 对 Base64-encoded 字符串进行解码,但使用宽容的实现来忽略无效字符。
- Command line –
CMD_LINE -
此选项可减少攻击者可能注入操作系统命令行命令并使用不寻常的格式伪装部分或全部命令的情况。
使用此选项可执行以下转换:
-
删除以下字符:
\ " ' ^ -
删除以下字符之前的空格:
/ ( -
将以下字符替换为空格:
, ; -
将多个空格替换为一个空格
-
将大写字母
A-Z转换为小写字母a-z
-
- Command line Unix –
CMD_LINE_UNIX -
此选项可以缓解攻击者可能注入 Unix 或 Linux 操作系统命令行命令并使用异常格式来掩盖部分或全部命令的情况。
使用此选项可执行以下转换:
-
删除以下字符:
\ " ' -
用空格替换以下字符:制表符
\t(ASCII 9)、换行符\n(ASCII 10)、回车符 (ASCII 13)、垂直制表符\r(ASCII 11) 和换页符\v(ASCII 12)\f -
将多个空格替换为一个空格
-
删除前导和结尾的空格
-
将大写字母
A-Z转换为小写字母a-z
-
- Command line Windows –
CMD_LINE_WIN -
此选项可以缓解攻击者可能注入 Windows 操作系统的命令行或 PowerShell 命令并使用异常格式来掩盖部分或全部命令的情况。
使用此选项可执行以下转换:
-
删除以下字符:
" ' ^ ` -
将脱字符号行续序列(插入符号后跟换行符
\n或回车符和换行符\r\n)作为单个单位删除 -
用空格替换以下字符:制表符
\t(ASCII 9)、换行符\n(ASCII 10)、回车符 (ASCII 13)、垂直制表符\r(ASCII 11) 和换页符\v(ASCII 12)\f -
将多个空格替换为一个空格
-
删除前导和结尾的空格
-
将大写字母
A-Z转换为小写字母a-z -
用单个反斜线替换连续的反斜线。保留单个反斜杠,因此
c:\windows\system32\cmd.exe和 UNC 路径等 Windows 路径保持不变。
-
- Compress whitespace –
COMPRESS_WHITE_SPACE -
AWS WAF 通过将多个空格替换为一个空格并将以下字符替换为空格字符来压缩空白 (ASCII 32):
-
Formfeed (ASCII 12)
-
Tab (ASCII 9)
-
换行符 (ASCII 10)
-
回车 (ASCII 13)
-
垂直制表符 (ASCII 11)
-
Non-breaking 空间 (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-encoded 字符替换以下字符。此列表使用小写的 HTML 编码,但处理方式不区分大小写,比如
&QuOt;和"以相同方式处理。HTML-encoded 字符
替换为……
""&&<<>> 或 不间断空格,十进制 160

\n,十进制 10	\t,十进制 9{或{{|、|或||}或}}!!##$$&percent;或%%'\(())*或**++,,..//::;;==??˜或˜~−-[或[[\\\]或]]&hat;^_或&underbar;_`或`` - JS decode –
JS_DECODE -
AWS WAF 解码 JavaScript 转义序列。如果
\uHHHH编码在FF01-FF5E的全角 ASCII 码范围内,则较高的字节用于检测和调整较低的字节。如果不是,则仅使用较低的字节,将较高的字节归零,从而可能导致信息丢失。 - JS decode extended –
JS_DECODE_EXT -
AWS WAF 像解码 JavaScript 转义序列一样
JS_DECODE,但使用宽容的实现方式,这样微软Windows文件路径就不会被改变。JS_DECODE_EXT不同于JS_DECODE以下几点:-
\"通过移除反斜杠并保留后续字符来解码转义\\\'、、和。\/ -
保留单字符转义符
\a、\b、\f、\n\r\t、,并\v同时保留反斜杠和后续字符。 -
通过保留反斜杠和后续字符来保留任何其他无法识别的
\C转义序列(例如\d或\w),这样 Windows 文件路径(例如\default和)就\windows不会被更改。
-
- 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 comments characters –
REMOVE_COMMENTS_CHAR -
AWS WAF 从输入中移除常见的注释字符:/*、*/、--和 #。
- Remove nulls –
REMOVE_NULLS -
AWS WAF 从输入中移除所有
NULL字节。 - Remove whitespace –
REMOVE_WHITESPACE -
AWS WAF 移除输入中的所有空白字符。
- Replace comments –
REPLACE_COMMENTS -
AWS WAF 用单个空格替换每次出现的 C-style 注释 (/*... */)。它不会压缩连续出现的多个事件。它会将未终止的注释替换为空格 (ASCII 0x20)。它不会更改独立终止的注释 (*/)。
- Replace nulls –
REPLACE_NULLS -
AWS WAF 将输入中的每个
NULL字节替换为空格字符 (ASCII 0x20)。 - SHA256 –
SHA256 -
AWS WAF 根据输入中的数据计算 SHA-256 哈希值。计算的哈希是原始二进制形式。
- SQL hex decode –
SQL_HEX_DECODE -
AWS WAF 解码 SQL 十六进制数据。例如,将 (
0x414243) AWS WAF 解码为 (ABC)。 - Trim –
TRIM -
AWS WAF 移除输入左右两侧的空白。
- Trim left –
TRIM_LEFT -
AWS WAF 移除输入左侧的空白。
- Trim right –
TRIM_RIGHT -
AWS WAF 移除输入右侧的空白。
- Uppercase –
UPPERCASE -
AWS WAF 将所有小写字母 (a-z) 转换为大写字母 ()。A-Z
- URL decode –
URL_DECODE -
AWS WAF 解码一个 URL-encoded 值。
- URL decode Unicode –
URL_DECODE_UNI -
喜欢
URL_DECODE,但支持Microsoft-specific%u编码。如果代码在FF01-FF5E的全角 ASCII 码范围内,则较高的字节用于检测和调整较低的字节。否则,仅使用较低的字节,将较高的字节归零。 - UTF8 to Unicode –
UTF8_TO_UNICODE -
AWS WAF 将所有 UTF-8 字符序列转换为 Unicode。这有助于输入规范化,并最大限度地减少非英语语言的误报。