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

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

请求组件选项

本节介绍可以指定用于检查的 Web 请求的组件。您可以为在 Web 请求中查找模式的匹配规则语句指定请求组件。这些类型的语句包括字符串匹配、正则表达式匹配、大小限制和 SQL 注入攻击语句。有关如何使用这些请求组件设置的信息,请参阅各个规则语句。有关规则语句的更多信息,请参阅规则语句列表

除非另有说明,否则如果 Web 请求不包含规则语句中指定的请求组件,则请求结果与规则不匹配。

注意

您可以为每个需要它的规则语句指定一个请求组件。要检查请求的多个组件,请为每个组件创建一条规则语句。

Amazon WAF控制台和 API 文档为以下位置的请求组件设置提供指导:

  • 控制台上的@@ 规则生成器-在常规规则类型的语句设置中,在请求组件下的 “检查” 对话框中选择要检查的组件

  • API 语句内容FieldToMatch

本节的其余部分将介绍要检查的 Web 请求部分的选项。

HTTP method

检查请求的 HTTP 方法。HTTP 方法指示 Web 请求要求您的受保护资源执行的操作的类型,例如POSTGET

单个标头

检查请求中的单个命名标头。对于此选项,您可以在标题字段名称中指定标题键,例如User-AgentReferer。密钥的字符串匹配不区分大小写。

所有标题

检查所有请求标头,包括 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 根据 bostonseattle 评估您指定的名称。如果匹配其中任意一个,则检查匹配。

All query parameters (所有查询参数)

检查请求中的所有查询参数。这与单个查询参数组件的选择类似,但Amazon WAF会检查查询字符串中所有参数的值。例如,如果 URL 为 www.xyz.com?UserName=abc&SalesRegion=seattle,并且如果 UserNameSalesRegion 的值与检查条件匹配,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运行两种匹配模式。第一个匹配模式的输出用作第二个匹配模式的输入:

  1. Amazon WAF解析和提取 JSON 内容并识别要检查的元素。为此,请Amazon WAF使用您在规则的 JSON 正文规范中提供的标准。

  2. 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(包含元素路径的一部分)未经过评估。

  • 对于将匹配范围设置为全部:ef,g

  • 对于将匹配范围设置为 keys:ef

  • 对于设置为值的匹配范围:g.