本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
请求组件选项
本节介绍可以指定用于检查的 Web 请求的组件。您可以为在 Web 请求中查找模式的匹配规则语句指定请求组件。这些类型的语句包括字符串匹配、正则表达式匹配、大小限制和 SQL 注入攻击语句。有关如何使用这些请求组件设置的信息,请参阅各个规则语句。有关规则语句的更多信息,请参阅规则语句列表
除非另有说明,否则如果 Web 请求不包含规则语句中指定的请求组件,则请求结果与规则不匹配。
注意
您可以为每个需要它的规则语句指定一个请求组件。要检查请求的多个组件,请为每个组件创建一条规则语句。
Amazon WAF控制台和 API 文档为以下位置的请求组件设置提供指导:
-
控制台上的@@ 规则生成器-在常规规则类型的语句设置中,在请求组件下的 “检查” 对话框中选择要检查的组件。
-
API 语句内容 —
FieldToMatch
本节的其余部分将介绍要检查的 Web 请求部分的选项。
主题
HTTP method
检查请求的 HTTP 方法。HTTP 方法指示 Web 请求要求您的受保护资源执行的操作的类型,例如POST或GET。
单个标头
检查请求中的单个命名标头。对于此选项,您可以在标题字段名称中指定标题键,例如User-Agent或Referer。密钥的字符串匹配不区分大小写。
所有标题
检查所有请求标头,包括 Cookie。您可以应用筛选器检查所有标头的子集。对于此选项,您需要提供以下规格:
-
匹配模式-用于获取标题子集以供检查的过滤器。 Amazon WAF在标题键中查找这些模式。
匹配模式设置可以是以下之一:
-
全部 — 匹配所有按键。评估所有标题的规则检查标准。
-
排除的标头 — 仅检查其键与此处指定的任何字符串都不匹配的标头。密钥的字符串匹配不区分大小写。
-
包含标头 — 仅检查键与此处指定的字符串之一匹配的标头。密钥的字符串匹配不区分大小写。
-
-
匹配范围 —Amazon WAF 应使用规则检查标准检查的标头部分。您可以为键和值指定键、值或全部。
-
超大处理 —Amazon WAF 应如何处理标头数据大于Amazon WAF可检查范围的请求。您最多可以检查请求标头的前 8 KB(8,192 字节),最多检查前 200 个标头。在达到第一个限制之前Amazon WAF,内容可供检查。您可以选择继续检查,也可以选择跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的超大处理。
Cookie
检查所有请求 Cookie。您可以应用筛选器检查所有 Cookie 的子集。对于此选项,您需要提供以下规格:
-
匹配模式 — 用于获取 Cookie 子集以供检查的过滤器。 Amazon WAF在 cookie 键中查找这些图案。
匹配模式设置可以是以下之一:
-
全部 — 匹配所有按键。评估所有 Cookie 的规则检查标准。
-
排除的 Cooki e — 仅检查其键与此处指定的任何字符串都不匹配的 Cookie。密钥的字符串匹配区分大小写且必须精确。
-
包含的 Cook ie — 仅检查键与此处指定的字符串之一匹配的 Cookie。密钥的字符串匹配区分大小写且必须精确。
-
-
匹配范围 —Amazon WAF 应使用规则检查标准检查的 Cookie 部分。您可以为键和值指定键、值或全部。
-
超大处理 —Amazon WAF 应如何处理 Cookie 数据超出Amazon WAF可检查范围的请求。您最多可以检查请求 cookie 的前 8 KB(8,192 字节),最多可以检查前 200 个 cookie。在达到第一个限制之前Amazon WAF,内容可供检查。您可以选择继续检查,也可以选择跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的超大处理。
URI path
检查 URL 中标识资源的部分(例如)/images/daily-ad.jpg。有关信息,请参阅统一资源标识符 (URI):一般语法
如果您不使用带有此选项的文本转换,则Amazon WAF不会对 URI 进行标准化,而是会完全按照请求中从客户端收到的URI进行检查。有关文本转换的信息,请参见文本转换。
查询字符串
检查 URL 中在?字符之后出现的部分(如果有)。
注意
对于跨站点脚本匹配语句,我们建议您选择所有查询参数而不是查询字符串。选择 “所有查询参数” 会在基本成本的基础上增加 10 个 WCU。
Single query parameter (单个查询参数)
检查您定义为查询字符串一部分的单个查询参数。 Amazon WAF检查您指定的参数的值。
对于此选项,您还需要指定查询参数。例如,如果 URL 为www.xyz.com?UserName=abc&SalesRegion=seattle,则可以SalesRegion为查询参数指定UserName或。参数名称的最大长度为 30 个字符。名称不区分大小写,因此,如果您指定UserName,则会Amazon WAF匹配包括username和在内的所有UserName变体UsERName。
如果查询字符串包含您指定的查询参数的多个实例,则使用OR逻辑Amazon WAF检查所有值是否匹配。例如,在 URL www.xyz.com?SalesRegion=boston&SalesRegion=seattle 中,Amazon WAF 根据 boston 和 seattle 评估您指定的名称。如果匹配其中任意一个,则检查匹配。
All query parameters (所有查询参数)
检查请求中的所有查询参数。这与单个查询参数组件的选择类似,但Amazon WAF会检查查询字符串中所有参数的值。例如,如果 URL 为 www.xyz.com?UserName=abc&SalesRegion=seattle,并且如果 UserName 或 SalesRegion 的值与检查条件匹配,Amazon WAF 则会触发匹配。
选择此选项会在基本成本的基础上增加 10 个 WCU。
Body
检查请求正文,以纯文本形式评估。您还可以使用JSON内容类型将正文评估为 JSON。
请求正文是请求的一部分,它紧跟请求标头后面。它包含网络请求所需的任何其他数据,例如,来自表单的数据。
-
在控制台中,通过选择内容类型选项纯文本,在请求选项正文下选择此选项。
-
在 API 中,在规则的
FieldToMatch规范中,您指定Body以纯文本形式检查请求正文。
必须为此组件类型指定超大处理。您可以检查请求正文的前 8 KB(8,192 字节)。OversizeAmazon WAF 处理定义了如何处理正文数据大于Amazon WAF可检查范围的请求。您可以选择继续检查,也可以选择跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的超大处理。
您也可以将正文评估为已解析的 JSON。有关此问题的信息,请参阅以下部分。
json 正文
检查请求正文,以 JSON 形式评估。您也可以以纯文本形式评估正文。
请求正文是请求的一部分,它紧跟请求标头后面。它包含网络请求所需的任何其他数据,例如,来自表单的数据。
-
在控制台中,通过选择内容类型选项 JSON,在请求选项正文下选择此选项。
-
在 API 中,在规则的
FieldToMatch规范中,您可以指定JsonBody。
必须为此组件类型指定超大处理。您可以检查请求正文的前 8 KB(8,192 字节)。OversizeAmazon WAF 处理定义了如何处理正文数据大于Amazon WAF可检查范围的请求。您可以选择继续检查,也可以选择跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的超大处理。
当以已解析的 JSON 形式Amazon WAF检查 Web 请求正文时,它会解析并从 JSON 中提取元素,并使用规则的匹配语句标准检查您指定的部分。
选择此选项会使匹配语句的基本成本 WCU 翻倍。例如,如果不使用 JSON 解析的匹配语句基本成本为 5 个 WCU,则使用 JSON 解析会将成本翻倍至 10 个 WCU。
使用此选项,对 Web 请求正文Amazon WAF运行两种匹配模式。第一个匹配模式的输出用作第二个匹配模式的输入:
-
Amazon WAF解析和提取 JSON 内容并识别要检查的元素。为此,请Amazon WAF使用您在规则的 JSON 正文规范中提供的标准。
-
Amazon WAF将任何文本转换应用于提取的元素,然后将生成的 JSON 元素集与规则语句的匹配标准进行匹配。如果有任何元素匹配,则 Web 请求与规则匹配。
您可以指定以下标准用于第一个模式匹配步骤,Amazon WAF以确定要检查的 JSON 元素:
-
正文解析后备行为 — 如果无法完全解析 JSON 正文,Amazon WAF应该怎么做。这些选项如下所示:
-
无(默认行为)-仅在内容遇到解析错误时才对其进行Amazon WAF评估。
-
以@@ 字符串形式计算-以纯文本形式检查正文。 Amazon WAF将您为 JSON 检查定义的文本转换和检查标准应用于正文文本字符串。
-
Match-将 Web 请求视为与规则语句匹配。 Amazon WAF将规则操作应用于请求。
-
不匹配 — 将 Web 请求视为与规则语句不匹配。
Amazon WAF 会尽最大努力解析整个 JSON 正文,但可能会因为无效字符、重复键、截断以及其根节点不是对象或数组的任何内容等原因而被迫停止。
Amazon WAF将以下示例中的 JSON 解析为两个有效的键:值对:
-
缺少逗号:
{"key1":"value1""key2":"value2"} -
缺少冒号:
{"key1":"value1","key2""value2"} -
额外的冒号:
{"key1"::"value1","key2""value2"}
-
-
JSON 匹配范围 — JSON 中Amazon WAF应检查的元素类型。您可以为键和值指定键、值或全部。
-
要检查的内容-已解析和提取的 JSON 中Amazon WAF要检查的元素。
您必须指定以下几项之一:
-
完整的 JSON 内容-评估已解析的 JSON 中的所有元素。
-
仅包含元素-仅评估 JSON 中与您提供的 JSON 指针标准相匹配的元素。有关 JSON 指针语法的信息,请参阅互联网工程任务组 (IETF) 文档JavaScript 对象表示法 (JSON) 指针
。 不要使用此选项将 JSON 中的所有路径包含为。改用完整 JSON 内容。
例如,在控制台中,您可以提供以下各项:
/dogs/0/name /dogs/1/name在 API 或 CLI 中,您可以提供以下内容:
"IncludedPaths": ["/dogs/0/name", "/dogs/1/name"]
-
JSON 车身检查场景示例
如果包含的元素设置为/a/b,则对于以下 JSON 正文:
{ "a":{ "c":"d", "b":{ "e":{ "f":"g" } } } }
以下列表描述了每种匹配范围设置的计算结果。Amazon WAF密钥b(包含元素路径的一部分)未经过评估。
-
对于将匹配范围设置为全部:
e、f,和g。 -
对于将匹配范围设置为 keys:
e和f。 -
对于设置为值的匹配范围:
g.