傳送自訂回應 Block actions - AWS WAF, AWS Firewall Manager和 AWS Shield Advanced

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

傳送自訂回應 Block actions

本節說明如何指示 AWS WAF ,將自訂回應傳送HTTP回用戶端,以進行規則動作或 Web ACL 預設處理行動 (設定為) Block。 如需規則動作的詳細資訊,請參閱使用規則動作於 AWS WAF。如需有關預設 Web ACL 動作的詳細資訊,請參閱設定網頁ACL預設動作 AWS WAF

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

使用案例

自訂回應的使用案例如下:

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

  • 將自定義響應頭發送回客戶端。您可以指定除外的任何標頭名稱content-type

  • 將靜態錯誤頁面發送回客戶端。

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

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

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

的主機服務 AWS 您保護的資源 AWS WAF 可能允許對 Web 請求進行自定義響應處理。範例如下:

你不能合併 AWS WAF 自定義響應設置與受保護的自定義響應設置 AWS 資源。任何單獨的 Web 請求的響應規範要么完全來自 AWS WAF 或完全不受保護的資源。

對於網絡請求 AWS WAF 塊,以下顯示優先級的順序。

  1. AWS WAF 自定義響應 — 如果 AWS WAF Block 動作啟用了自定義響應,受保護的資源將配置的自定義響應發送回客戶端。您可能已在受保護的資源本身中定義的任何回應設定都沒有作用。

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

  3. AWS WAF 預設 Block response — 否則,受保護的資源會以 AWS WAF 預設 Block 響應403 (Forbidden)

對於網絡請求 AWS WAF 允許,您對受保護資源的配置決定了它發送回客戶端的響應。您無法在中配置響應設置 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 } }