为非阻止操作插入自定义请求标头 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为非阻止操作插入自定义请求标头

当规则操作未阻止请求时,您可以指示 Amazon WAF 在原始 HTTP 请求中插入自定义标头。使用此选项,您只需添加到请求中。您不能修改或替换原始请求的任何部分。插入自定义标头的用例包括向下游应用程序发出信号,要求其根据插入的标头以不同方式处理该请求,以及标记该请求以进行分析。

此选项适用于规则操作 Allow、Count、CAPTCHA 和 Challenge,以及设置为 Allow 的 Web ACL 默认操作。有关规则操作的更多信息,请参阅 规则操作。有关默认 Web ACL 操作的更多信息,请参阅 Web ACL 默认操作

自定义请求标头名称

Amazon WAF 为其插入的所有请求标头添加前缀x-amzn-waf-,以避免与请求中已有的标头混淆。例如,如果您指定标题名称sample,则会 Amazon WAF 插入标题x-amzn-waf-sample

同名标头

如果请求中已经有 Amazon WAF 正在插入的同名标头,则 Amazon WAF 会覆盖该标头。因此,如果您在多个具有相同名称的规则中定义标头,则检查请求并查找匹配项的最后一条规则将添加其标头,而之前的任何规则都不会添加标头。

带有非终止规则操作的自定义标头

与Allow操作不同,该Count操作不会停止 Amazon WAF 使用 Web ACL 中的其余规则处理 Web 请求。同样,当CAPTCHA并Challenge确定请求令牌有效时,这些操作不会停止 Amazon WAF 处理 Web 请求。因此,如果采用具有这些操作之一的规则插入自定义标头,后续规则可能也会插入自定义标头。有关规则操作行为的更多信息,请参阅 规则操作

例如,假设您拥有以下规则,按所示顺序排列优先级:

  1. RuleA,其中包含一个 Count 操作和一个名为 RuleAHeader 的自定义标头。

  2. RuleB,其中包含一个 Allow 操作和一个名为 RuleBHeader 的自定义标头。

如果请求同时匹配 ruleA 和 RuleB,则 Amazon WAF 插入标头x-amzn-waf-RuleAHeaderx-amzn-waf-RuleBHeader,然后将请求转发到受保护的资源。

Amazon WAF 完成对请求的检查后,在 Web 请求中插入自定义标头。因此,如果您将自定义请求处理与将操作设置为 Count 的规则一起使用,则后续规则不会检查您添加的自定义标头。

自定义请求处理示例

您可以为规则的操作或 Web ACL 的默认操作定义自定义请求处理。下表显示了 Web ACL 的默认操作中添加的用于自定义处理的 JSON。

{ "Name": "SampleWebACL", "Scope": "REGIONAL", "DefaultAction": { "Allow": { "CustomRequestHandling": { "InsertHeaders": [ { "Name": "fruit", "Value": "watermelon" }, { "Name": "pie", "Value": "apple" } ] } } }, "Description": "Sample web ACL with custom request handling configured for default action.", "Rules": [], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SampleWebACL" } }