傳送Block動作的自訂回應 - AWS WAF AWS Firewall Manager、 AWS Shield Advanced和 AWS Shield 網路安全主管

推出 的新主控台體驗 AWS WAF

您現在可以使用更新後的體驗,在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊,請參閱使用更新的主控台體驗

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

傳送Block動作的自訂回應

本節說明如何指示 AWS WAF 將自訂 HTTP 回應傳回用戶端,以取得設定為 的規則動作或保護套件 (Web ACL) 預設動作Block。如需規則動作的詳細資訊,請參閱 在 中使用規則動作 AWS WAF。如需預設保護套件 (Web ACL) 動作的詳細資訊,請參閱 在 中設定保護套件 (Web ACL) 預設動作 AWS WAF

當您定義Block動作的自訂回應處理時,您可以定義狀態碼、標頭和回應內文。如需可與 搭配使用的狀態碼清單 AWS WAF,請參閱以下章節:自訂回應支援的狀態碼

使用案例

自訂回應的使用案例包括下列項目:

  • 將非預設狀態碼傳回用戶端。

  • 將自訂回應標頭傳回用戶端。您可以指定 以外的任何標頭名稱content-type

  • 傳送靜態錯誤頁面回用戶端。

  • 將用戶端重新導向至不同的 URL。若要這樣做,您可以指定其中一個3xx重新導向狀態碼,例如 301 (Moved Permanently)302 (Found),然後使用新的 URL 指定名為 Location 的新標頭。

與您在受保護資源中定義的回應互動

您為 AWS WAF Block動作指定的自訂回應優先於您在受保護資源中定義的任何回應規格。

您使用 保護之 AWS 資源的主機服務 AWS WAF 可能會允許 Web 請求的自訂回應處理。範例如下:

您無法在受保護 AWS 的資源中結合 AWS WAF 自訂回應設定與自訂回應設定。任何個別 Web 請求的回應規格完全來自 AWS WAF 或完全來自受保護的資源。

對於 AWS WAF 封鎖的 Web 請求,以下顯示優先順序。

  1. AWS WAF 自訂回應 – 如果動作 AWS WAF Block已啟用自訂回應,受保護的資源會將設定的自訂回應傳回給用戶端。您可能已在受保護資源本身中定義的任何回應設定都無效。

  2. 受保護的資源中定義的自訂回應 – 否則,如果受保護的資源已指定自訂回應設定,則受保護的資源會使用這些設定來回應用戶端。

  3. AWS WAF 預設Block回應 – 否則,受保護的資源會以 AWS WAF 預設回應 回應用戶端Block403 (Forbidden)

對於 AWS WAF 允許 的 Web 請求,受保護資源的組態會決定其傳回用戶端的回應。您無法 AWS WAF 在 中為允許的請求設定回應設定。您可以在 中 AWS WAF 為允許的請求設定的唯一自訂項目是將自訂標頭插入原始請求,然後再將請求轉送至受保護的資源。此選項會在上一節 中說明插入非封鎖動作的自訂請求標頭

自訂回應標頭

您可以指定 以外的任何標頭名稱content-type

自訂回應內文

您可以在要使用的保護套件 (Web ACL) 或規則群組內容中定義自訂回應的內文。定義自訂回應內文之後,您可以在建立自訂回應內文的保護套件 (Web ACL) 或規則群組中的任意位置參考。在個別Block動作設定中,您會參考要使用的自訂內文,並定義自訂回應的狀態碼和標頭。

當您在主控台中建立自訂回應時,您可以選擇已定義的回應內文,也可以建立新的內文。在主控台外部,您可以在保護套件 (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 } }