在中使用文本转换 AWS WAF - AWS WAFAWS Firewall Manager、和 AWS Shield Advanced

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

在中使用文本转换 AWS WAF

本节介绍如何为以下对象提供转换 AWS WAF 在审查请求之前申请。

在查找模式或设置约束条件的语句中,您可以为以下内容提供转换 AWS WAF 在审查请求之前申请。转换会重新格式化 Web 请求,以消除攻击者为了绕过而使用的一些不寻常的格式 AWS WAF.

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

如果您提供了多个转换,则还需要为设置顺序 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 通过将多个空格替换为一个空格并将以下字符替换为空格字符 (ASCII32) 来压缩空白:

  • Formfeed (ASCII12)

  • 选项卡 (ASCII9)

  • 换行符 (ASCII10)

  • 回车 (ASCII13)

  • 垂直制表符 (ASCII11)

  • 不间断空格 (ASCII160)

CSS decode – CSS_DECODE

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

替换为……

"

"

&

&

<

<

&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

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

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 风格注释 (/*... */) 替换为单个空格。它不会压缩连续出现的多个事件。它将未结尾的注释替换为空格 (ASCII0x20)。它不会更改独立终止的注释 (*/)。

Replace nulls – REPLACE_NULLS

AWS WAF 用空格NULL字符 (ASCII0x20) 替换输入中的每个字节。

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 编码。如果代码在的全角ASCII代码范围内FF01-FF5E,则使用较高的字节来检测和调整较低的字节。否则,仅使用较低的字节,将较高的字节归零。

UTF8 to Unicode – UTF8_TO_UNICODE

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