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

介绍 Amazon WAF 的全新控制台体验

现在,您可以使用更新后的体验访问控制台中任意位置的 Amazon WAF 功能。有关更多详细信息,请参阅 使用更新的控制台体验

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

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

重要

此选项适用于规则操作 Allow、Count、CAPTCHA 和 Challenge,以及设置为 Allow 的保护包(web ACL)默认操作。有关规则操作的更多信息,请参阅 在 Amazon WAF 中使用规则操作。有关默认保护包(web ACL)操作的更多信息,请参阅 在 Amazon WAF 中设置保护包(web ACL)默认操作

使用自定义请求标头名称时的注意事项

在请求标头中添加了前缀

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

重要

作为安全措施,您可以添加字符串匹配规则,以阻止标头以 x-amzn-waf- 开头的请求。这会阻止非 Amazon WAF 源的请求,这些请求模仿处理自定义请求标头时由 Amazon WAF 插入的 x-amzn-waf- 前缀字符串。

以下示例显示配置为阻止流量的字符串匹配规则,其中 x-amzn-waf- 前缀并非由 Amazon WAF 插入:

"Rules": [ { "Name": "CustomHeader", "Priority": 0, "Statement": { "ByteMatchStatement": { "SearchString": " x-amzn-waf-", "FieldToMatch": { "Headers": { "MatchPattern": { "All": {} }, "MatchScope": "KEY", "OversizeHandling": "MATCH" } }, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ], "PositionalConstraint": "STARTS_WITH" } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "CustomHeader" } } ]

有关使用字符串匹配规则的信息,请参阅 字符串匹配规则语句

同名标头

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

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

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

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

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

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

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

Amazon WAF 在 web 请求完成检查后,将自定义标头插入到 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 protection pack (web ACL) with custom request handling configured for default action.", "Rules": [], "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SampleWebACL" } }