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

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

文本转换

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

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

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

WCU — 每个文本转换都是 10 个 WCU。

Amazon WAF 控制台和 API 文档还在以下位置提供有关这些设置的指南:

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

  • API 语句内容TextTransformations

文本转换的选项
Base64 解码

Amazon WAF对 Base64 编码字符串进行解码。

Base64 解码文本

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

Command line

此选项可减少攻击者可能注入操作系统命令行命令并使用不寻常的格式伪装部分或全部命令的情况。

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

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

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

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

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

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

压缩空格空间

Amazon WAF 用一个空格替换多个空格,并将以下字符替换为空格字符(十进制 32):

  • \f,换页符,十进制 12

  • \t,制表符,十进制 9

  • \n,换行符,十进制 10

  • \r,回车符,十进制 13

  • \v,垂直制表符,十进制 11

  • 不间断空格,十进制 160

CSS 解码

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

逃版标注分类

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

十六进制解码

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

HTML 实体解码代码

Amazon WAF 将 HTML 编码的字符替换为未编码的字符:

  • " 替换为 "

  •   替换为不间断空格(十进制 160)

  • &lt; 替换为 <

  • &gt; 替换为 >

  • 将以十六进制格式表示的字符 &#xhhhh; 替换为对应字符

  • 将以十进制格式表示的字符 &#nnnn; 替换为对应字符

JS 解码

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

小写

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

MD5

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

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

标准化路径

Amazon WAF从输入字符串中删除不在输入开头的多个斜杠、目录自引用和目录反向引用。

标准化路径获胜

Amazon WAF处理方式是这样的NORMALIZE_PATH,但首先将反斜杠字符转换为正斜杠。

移除空值

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

替换注释

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

替换空值

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

SQL 十六进制解码

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

URL decode

Amazon WAF解码 URL 编码的值。

网址解码单元

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

UTF8 转 Unicode

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