View a markdown version of this page

在中使用预解析文本转换 AWS WAF - AWS WAF, AWS Firewall Manager, AWS Shield Advanced,以及 AWS Shield 网络安全总监

引入全新的主机体验 AWS WAF

现在,您可以使用更新的体验在控制台的任何位置访问 AWS WAF 功能。有关更多详细信息,请参阅使用控制台

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

在中使用预解析文本转换 AWS WAF

Pre-parse 在将原始查询字符串 AWS WAF 解析为单个查询参数之前,文本转换会将其标准化。这些转换解决了解析器差异攻击和 HTTP 参数污染 (HPP),攻击者在这些攻击中编码或操纵查询字符串分隔符以绕过检查规则。

仅当请求组件为或时,才能使用预解析文本转换。SingleQueryArgument AllQueryArguments AWS WAF 在标准文本转换之前应用预解析文本转换。每条规则语句最多可以指定 10 个预解析文本转换。每次预解析文本转换都会增加规则语句成本 10 个 WCU。

在 API 中,您可以使用规则语句中的可选PreParseTextTransformations设置配置预解析文本转换。

注意

如果您不需要任何预解析标准化,请不要指定解析前的文本转换。默认行为是NONE,它将原始查询字符串不加修改地传递给解析器。

以下预解析文本转换可用。

None – NONE

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

URL decode – URL_DECODE

AWS WAF URL-decodes 解析前的原始查询字符串。解码 %HH 序列(例如,%26 变成 &,%3D 变成 =)。这可能会暴露先前编码的新查询参数边界。

URL decode Unicode – URL_DECODE_UNI

URL_DECODE,但也可以解码 Unicode-encoded序列 (%uHHH)。如果代码在 FF01-FF5E 的全角 ASCII 码范围内,则较高的字节用于检测和调整较低的字节。否则,仅使用较低的字节,将较高的字节归零。

Combine duplicate query arguments by comma – COMBINE_DUPLICATE_QUERY_ARGS_BY_COMMA

AWS WAF 在第一个出现位置将重复查询参数键的所有值合并为一个逗号分隔的 (0x2C) 字符串,然后删除后面的重复项。例如,a=1&b=2&a=3 改为 a=1,3&b=2。当您的后端将重复的查询参数合并为数组时,请使用此转换。这在 .NET、API 网关和中很常见 Express.js。 AWS WAF 将组合值作为单个单位进行检查。

Replace semicolons with ampersands – REPLACE_SEMICOLONS_WITH_AMPERSANDS

AWS WAF 在解析之前,将原始查询字符串中的所有分号 (0x3B) 替换为和符号 (0x26)。一些 Web 框架和服务,包括 AWS API 网关 REST API,将分号视为等同于 & 符号的查询参数分隔符。这种转换使查询字符串标准化。 AWS WAF 然后像后端一样拆分分分号,确保参数解析的一致性。