块操作的自定义响应 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

块操作的自定义响应

您可以指示Amazon WAF将自定义 HTTP 响应发送回客户端,以执行设置为阻止请求的规则操作或 Web ACL 默认操作。有关规则操作的更多信息,请参阅 Amazon WAF 规则操作。有关默认 Web ACL 操作的更多信息,请参阅。确定 Web ACL 的默认操作.

这些区域有:Amazon WAF块操作定义关联的受保护资源发送回客户端的响应。默认情况下,响应为403 (Forbidden). 有关阻止操作的更多信息,请参阅Amazon WAF 规则操作.

为块操作定义自定义响应处理时,您可以定义状态代码、标头和响应正文。有关状态代码的列表,您可以与Amazon WAF,请参阅下面的部分,自定义响应支持的状态代码.

使用案例

自定义响应的使用案例包括:

  • 向客户端发送返回非默认状态代码。

  • 将静态错误页发送回客户端。

  • 将客户端重定向到其他 URL,方法是指定3xx重定向状态代码,如301 (Moved Permanently)或者302 (Found),然后指定一个名为Location替换为新 URL。

与为受保护资源定义的响应进行交互

您指定的自定义响应Amazon WAF块操作优先于您在受保护资源中定义的任何响应规范。

主机服务Amazon资源,您可以使用Amazon WAF可能允许对 Web 请求进行自定义响应处理。示例包括:

这是不可能的Amazon WAF自定义响应,具有受保护的Amazon资源。对响应的控制完全属于Amazon WAF或完全使用受保护的资源:

  1. 如果Amazon WAF阻止 Web 请求,Amazon WAF确定受保护资源向客户端发送回的响应。对于默认的阻止操作,响应为403 (Forbidden). 如果您自定义阻止操作,则完全在自定义设置中提供响应。这些阻止操作响应优先于您可能在受保护资源本身中定义的任何响应设置。

  2. 如果Amazon WAF允许通过 Web 请求,则受保护资源的配置将确定它发回客户端的响应。对于允许的请求,您可以在Amazon WAF是将自定义标头插入到原始请求中,然后再转发到受保护的资源。上一节介绍了此选项,用于允许和计数操作的自定义请求标头插入.

自定义响应正文

您可以在要使用的 Web ACL 或规则组的上下文中定义自定义响应的正文。定义自定义响应正文后,您可以通过在创建它的 Web ACL 或规则组中的其他任何位置引用来使用它。在单个阻止操作设置中,您可以引用要使用的自定义主体,并定义自定义响应的状态代码和标题。

在控制台中创建自定义响应时,可以从已定义的响应主体中进行选择,也可以创建新主体。在控制台之外,您可以在 Web ACL 或规则组级别定义自定义响应主体,然后从 Web ACL 或规则组中的操作设置引用它们。下节中的示例 JSON 中显示了这一点。

自定义响应示例

以下示例列出了具有自定义响应设置的规则组的 JSON。为整个规则组定义自定义响应正文,然后在规则操作中由键引用。

{ "ARN": "test_rulegroup_arn", "Capacity": 1, "CustomResponseBodies": { "CustomResponseBodyKey1": { "Content": "This is a plain text response body.", "ContentType": "TEXT_PLAIN" } }, "Description": "This is a test rule group.", "Id": "test_rulegroup_id", "Name": "TestRuleGroup", "Rules": [ { "Action": { "Block": { "CustomResponse": { "CustomResponseBodyKey": "CustomResponseBodyKey1", "ResponseCode": 404, "ResponseHeaders": [ { "Name": "BlockActionHeader1Name", "Value": "BlockActionHeader1Value" } ] } } }, "Name": "GeoMatchRule", "Priority": 1, "Statement": { "GeoMatchStatement": { "CountryCodes": [ "US" ] } }, "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "TestRuleGroupReferenceMetric", "SampledRequestsEnabled": true } } ], "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "TestRuleGroupMetric", "SampledRequestsEnabled": true } }