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

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

请求组件选项

本部分将介绍您可以指定供检查的 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,包括usernameUsERName.

如果查询字符串包含您指定的查询参数的多个实例,Amazon WAF使用以下命令检查匹配项的所有值OR逻辑 例如,在 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。

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 请求正文运行两个匹配模式。第一个匹配模式的输出用作第二个匹配模式的输入:

  1. Amazon WAF解析并提取 JSON 内容并识别要检查的元素。要做到这一点,Amazon WAF使用您在规则的 JSON 正文规范中提供的标准。

  2. 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.

  • 对于设置为密钥的匹配范围:ef.

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

HTTP method

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