本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
请求组件选项
本部分将介绍您可以指定供检查的 Web 请求的组件。您可以为匹配规则语句指定请求组件,这些语句在 Web 请求中查找模式。这些类型的语句包括字符串匹配、正则表达式匹配、大小约束和 SQL 注入攻击语句。有关如何使用这些请求组件设置的信息,请参阅各个规则语句。有关规则语句的更多信息,请参阅规则语句列表
除非另有说明,否则 Web 请求不包含规则语句中指定的请求组件,则请求结果与规则不匹配。
您可以为每个需要它的规则语句指定一个请求组件。要检查请求的多个组件,请为每个组件创建一条规则语句。
这些区域有:Amazon WAF控制台和 API 文档为以下位置的请求组件设置提供指导:
-
规则生成器在控制台上 — 在Statement常规规则类型的设置,请在检查在处登录请求组件.
-
API 语句内容–
FieldToMatch
本节的其余部分将介绍要检查的 Web 请求的选项。
单个标头
检查请求中的单个命名标头。对于该选项,您可以在标头字段名称,例如,User-Agent要么Referer.
所有HEADER
检查所有请求标头,包括 Cookie。您可以应用筛选条件检查所有标头的子集。对于此选项,您需要提供以下规格:
-
比赛模式— 用于获取报头子集以供检查的过滤器。Amazon WAF在标题键中查找这些模式。
匹配模式设置可以是以下设置之一:
-
全部— 匹配所有按键。评估所有标头的规则检查标准。
-
Exclude— 仅检查其键与您在此处指定的任何字符串都不匹配的标题。密钥的字符串匹配区分大小写且必须精确。
-
包含标题— 仅检查密钥与您在此处指定的字符串之一相匹配的标头。密钥的字符串匹配区分大小写且必须精确。
-
-
比赛范围— 标题中那部分内容Amazon WAF应按照规则检查标准进行检查。您可以指定到密钥,Values,或全部用于键和值。
-
超大处理— 的工作原理Amazon WAF应处理标头数据大于以下值的请求Amazon WAF可以检查。您最多可以检查请求标头的前 8 KB(8,192 字节),最多可以检查前 200 个标头。内容可通过以下方式进行检查Amazon WAF直至达到第一个限制。您可以选择继续检查,也可以跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的处理量过大.
Cookie
检查所有请求 cookie。您可以应用筛选条件检查所有 Cookie 的子集。对于此选项,您需要提供以下规格:
-
比赛模式— 用于获取 Cookie 子集以供检查的过滤器。Amazon WAF在 cookie 密钥中查找这些模式。
匹配模式设置可以是以下设置之一:
-
全部— 匹配所有按键。评估所有 Cookie 的规则检查标准。
-
Exclude— 仅检查其密钥与您在此处指定的任何字符串都不匹配的 cookie。密钥的字符串匹配区分大小写且必须精确。
-
包括饼干— 仅检查密钥与您在此处指定的字符串之一相匹配的 cookie。密钥的字符串匹配区分大小写且必须精确。
-
-
比赛范围— 饼干中那些部分Amazon WAF应按照规则检查标准进行检查。您可以指定到密钥,Values,或全部用于键和值。
-
超大处理— 的工作原理Amazon WAF应处理 Cookie 数据大于以下内容的请求Amazon WAF可以检查。您最多可以检查请求 cookie 的前 8 KB(8,192 字节),最多可以检查前 200 个 cookie。内容可通过以下方式进行检查Amazon WAF直至达到第一个限制。您可以选择继续检查,也可以跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的处理量过大.
Single query parameter (单个查询参数)
检查您定义为查询字符串一部分的单个查询参数。Amazon WAF检查您指定的参数的值。
对于此选项,您还需要指定查询参数. 例如,如果 URL 是www.xyz.com?UserName=abc&SalesRegion=seattle,您可以指定UserName要么SalesRegion对于查询参数。参数名称的最大长度为 30 个字符。名称不区分大小写,因此,如果您指定UserName,Amazon WAF匹配以下的所有变体UserName,包括username和UsERName.
如果查询字符串包含您指定的查询参数的多个实例,Amazon WAF使用以下命令检查匹配项的所有值OR逻辑 例如,在 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。
URI 路径
检查 URL 中标识资源的部分,例如/images/daily-ad.jpg. 想要了解有关信息,请参阅统一资源标识符 (URI):通用语法
如果您未配合使用此选项和文本转换,Amazon WAF 不会规范化 URI,并会按照在请求中从客户端接收它时的原样对其进行检查。有关文本转换的信息,请参阅文本转换.
查询字符串
检查 URL 中出现在?字符(如果有)。
对于跨站脚本匹配语句,我们建议您选择所有查询参数代替查询字符串. 选择所有查询参数在基本成本的基础上增加 10 个 WCU。
Body
检查请求正文,评估为纯文本。您也可以使用以下方法将正文评估为 JSONJSON内容类型。
请求正文是请求的一部分,紧跟请求标头后面。它包含 Web 请求所需的任何其他数据,例如来自表单的数据。
-
在控制台中,您可以在请求选项选择Body,通过选择Content类型选择纯文本.
-
在 API 中,在规则中
FieldToMatch规格,你指定Body以纯文本形式检查请求正文。
必须为此组件类型指定超大处理。您可以检查请求正文的前 8 KB(8,192 字节)。超大处理定义了如何处理Amazon WAF处理正文数据大于以下值的请求Amazon WAF可以检查. 您可以选择继续检查,也可以跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的处理量过大.
您也可以将正文评估为已解析的 JSON。有关此的信息,请参阅下一部分。
JSON 正文
检查请求正文,以 JSON 形式进行评估。您也可以以纯文本形式评估正文。
请求正文是请求的一部分,紧跟请求标头后面。它包含 Web 请求所需的任何其他数据,例如来自表单的数据。
-
在控制台中,您可以在请求选项选择Body,通过选择Content类型选择JSON.
-
在 API 中,在规则中
FieldToMatch规格,你指定JsonBody.
必须为此组件类型指定超大处理。您可以检查请求正文的前 8 KB(8,192 字节)。超大处理定义了如何处理Amazon WAF处理正文数据大于以下值的请求Amazon WAF可以检查. 您可以选择继续检查,也可以跳过检查并将请求标记为与规则匹配或不匹配。有关处理超大内容的更多信息,请参阅请求组件的处理量过大.
当Amazon WAF以已解析的 JSON 形式检查 Web 请求正文,解析并提取 JSON 中的元素,并使用规则的匹配语句标准检查您指定的部分。
选择此选项会使比赛声明的基本成本 WCU 翻倍。例如,如果没有进行 JSON 解析的匹配语句基本成本为 5 个 WCU,则使用 JSON 解析会使成本翻倍,达到 10 个 WCU。
使用此选项,Amazon WAF针对 Web 请求正文运行两个匹配模式。第一个匹配模式的输出用作第二个匹配模式的输入:
-
Amazon WAF解析并提取 JSON 内容并识别要检查的元素。要做到这一点,Amazon WAF使用您在规则的 JSON 正文规范中提供的标准。
-
Amazon WAF对提取的元素应用任何文本转换,然后将生成的 JSON 元素集与规则语句的匹配条件进行匹配。如果有任何元素匹配,则该 Web 请求与规则匹配。
您可以为指定以下条件Amazon WAF用于第一个模式匹配步骤,识别要检查的 JSON 元素:
-
身体解析后备行为— 什么Amazon WAF如果无法完全解析 JSON 正文,应该这样做。这些选项如下所示:
-
无(默认行为)-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应该检查。您可以指定到密钥,Values,或全部用于键和值。
-
要检查的内容— 您想要的已解析和提取的 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,它是包含元素路径的一部分,未进行评估。
-
对于将匹配范围设置为 all,请执行以下操作:
e,f,和g. -
对于设置为密钥的匹配范围:
e和f. -
对于设置为值的匹配范围:
g.
HTTP method
检查请求的 HTTP 方法。HTTP 方法指示 Web 请求您的受保护资源执行的操作的类型。