为非阻塞操作插入自定义请求标头 - AWS WAF, AWS Firewall Manager,以及 AWS Shield Advanced

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

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

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

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

自定义请求标头名称

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

同名标头

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

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

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

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

  1. 带有 ruleA Count 操作和名为的自定义标题RuleAHeader

  2. 带有 ruleB Allow 操作和名为的自定义标题RuleBHeader

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

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

自定义请求处理示例

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

{ "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" } }