Application Load Balancer 的 HTTP 標頭修改 - Elastic Load Balancing

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

Application Load Balancer 的 HTTP 標頭修改

Application Load Balancer 支援對請求和回應標頭進行 HTTP 標頭修改。無需更新應用程式程式碼,標頭修改可讓您更妥善地控制應用程式流量和安全性。

重新命名標頭

標頭重新命名功能可讓您重新命名 Application Load Balancer 產生並新增至請求的所有 Transport Layer Security (TLS) 標頭,包括六個 mTLS 標頭,以及兩個 TLS 標頭、版本和密碼。

此修改 HTTP 標頭的功能可讓您的 Application Load Balancer 輕鬆支援使用特定格式化請求和回應標頭的應用程式。

標頭 描述

X-Amzn-Mtls-Clientcert-Serial-Number

確保目標可以識別和驗證用戶端在 TLS 交握期間提供的特定憑證。

X-Amzn-Mtls-Clientcert-Issuer

透過識別發出憑證的憑證授權機構,協助目標驗證和驗證用戶端憑證。

X-Amzn-Mtls-Clientcert-Subject

提供目標有關用戶端憑證所發行實體的詳細資訊,這有助於在 mTLS 身分驗證期間進行識別、身分驗證、授權和記錄。

X-Amzn-Mtls-Clientcert-Validity

允許目標驗證正在使用的用戶端憑證是否在其定義的有效期內,確保憑證不會過期或過早使用。

X-Amzn-Mtls-Clientcert-Leaf

提供 mTLS 交握中使用的用戶端憑證,允許伺服器驗證用戶端並驗證憑證鏈。這可確保連線安全且獲得授權。

X-Amzn-Mtls-Clientcert

攜帶完整的用戶端憑證。允許目標驗證憑證的真實性、驗證憑證鏈,以及在 mTLS 交握程序期間驗證用戶端。

X-Amzn-TLS-Version

指出用於連線的 TLS 通訊協定版本。它有助於判斷通訊的安全層級、對連線問題進行疑難排解,並確保合規。

X-Amzn-TLS-Cipher-Suite

指出用於保護 TLS 中連線的密碼編譯演算法組合。這可讓伺服器評估連線的安全性、協助進行相容性疑難排解,並確保符合安全政策。

若要讓 Application Load Balancer 接聽程式重新命名請求標頭,請使用下列命令:

aws elbv2 modify-listener-attributes \ --listener-arn ARN \ --attributes Key="routing.http.request.actual_header_field_name.header_name",Value="desired_header_field_name"

插入標頭

使用插入標頭,您可以設定 Application Load Balancer 將安全相關的標頭新增至回應。您可以使用十個新屬性插入標頭,包括 HSTS、CHS 和 CSP。

所有這些標頭的預設值皆為空白。發生這種情況時,Application Load Balancer 不會修改此回應標頭。

標頭 描述

Strict-Transport-Security

在指定的持續時間內,強制瀏覽器執行僅限 HTTPS 的連線,有助於防止man-in-the-middle攻擊、通訊協定降級和使用者錯誤。 可確保用戶端和目標之間的所有通訊都已加密。

Access-Control-Allow-Origin

控制是否可以從不同的原始伺服器存取目標上的資源。這允許安全的跨來源互動,同時防止未經授權的存取。

Access-Control-Allow-Methods

指定向目標提出跨來源請求時允許的 HTTP 方法。它提供控制哪些動作可以從不同的原始伺服器執行。

Access-Control-Allow-Headers

指定可在跨來源請求中包含哪些自訂或非簡單標頭。此標頭可讓目標控制來自不同原始伺服器的用戶端可以傳送哪些標頭。

Access-Control-Allow-Credentials

指定用戶端是否應該在跨來源請求中包含 Cookie、HTTP 身分驗證或用戶端憑證等登入資料。

Access-Control-Expose-Headers

允許目標指定用戶端可以在跨來源請求中存取哪些額外的回應標頭。

Access-Control-Max-Age

定義瀏覽器可以快取預檢請求結果的時間長度,減少重複預檢的需求。這有助於透過減少特定跨來源請求所需的 OPTIONS 請求數量來最佳化效能。

Content-Security-Policy

安全功能可防止 XSS 這類程式碼注入攻擊,方法是控制哪些資源,例如指令碼、樣式、影像等,可由網站載入和執行。

X-Content-Type-Options

使用無嗅探指令, 會防止瀏覽器猜測資源的 MIME 類型,藉此增強 Web 安全性。它可確保瀏覽器僅根據宣告的 Content-Type 解譯內容

X-Frame-Options

標頭安全機制,透過控制網頁是否可以內嵌在影格中,協助防止點擊攻擊。DENY 和 SAMEORIGIN 等值可確保內容不會內嵌在惡意或不受信任的網站。

若要設定 Application Load Balancer 接聽程式以插入 HSTS 標頭,請使用下列命令:

aws elbv2 modify-listener-attributes \ --listener-arn ARN \ --attributes Key="routing.http.response.strict_transport_security.header_value",Value="max-age=time_in_sec;includeSubdomains;preload;"

停用標頭

使用停用標頭,您可以設定 Application Load Balancer 從回應中停用server:awselb/2.0標頭。這可減少伺服器特定資訊的暴露,同時為您的應用程式新增額外的保護層。

屬性名稱為 routing.http.response.server.enabled。可用的值為 truefalse。預設值為 true

使用下列命令,將 Application Load Balancer 接聽程式設定為不要插入 server 標頭:

aws elbv2 modify-listener-attributes \ --listener-arn ARN \ --attributes Key="routing.http.response.server.enabled",Value=false
限制:
  • 標頭值可以包含下列字元

    • 英數字元:a-zA-Z0-9

    • 特殊字元: _ :;.,\/'?!(){}[]@<>=-+*#&`|~^%

  • 屬性的值大小不可超過 1K 位元組。

  • Elastic Load Balancing 會執行基本輸入驗證,以確認標頭值有效。不過,驗證無法確認特定標頭是否支援該值。

  • 為任何屬性設定空值會導致 Application Load Balancer 還原為預設行為。

  • 標頭只會插入至代碼為 2xx 或 3xx 的 HTTP 回應

如需詳細資訊,請參閱接聽程式屬性