本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
HTTP修改 Application Load Balancer 的标头
HTTP应用程序负载均衡器支持修改请求标头和响应标头。无需更新应用程序代码,修改标头即可更好地控制应用程序流量和安全性。
重命名标题
标头重命名功能允许您重命名 Application Load Balancer 生成并添加到请求中的所有传输层安全 (TLS) TLS 标头,包括六个 m 标头和两个TLS标头(版本和密码)。
这种修改HTTP标头的功能使您的 Application Load Balancer 能够轻松支持使用特殊格式的请求和响应标头的应用程序。
标题 | 描述 |
---|---|
X-Amzn-Mtls-Clientcert-Serial-Number |
确保目标能够识别和验证客户端在TLS握手期间提供的特定证书。 |
X-Amzn-Mtls-Clientcert-Issuer |
通过识别颁发证书的证书颁发机构,帮助目标对客户端证书进行验证和身份验证。 |
X-Amzn-Mtls-Clientcert-Subject |
向目标提供有关向其颁发客户端证书的实体的详细信息,这有助于在 m 身份验证期间进行识别、身份TLS验证、授权和记录。 |
X-Amzn-Mtls-Clientcert-Validity |
允许目标验证正在使用的客户端证书是否在其定义的有效期内,确保证书没有过期或过早使用。 |
X-Amzn-Mtls-Clientcert-Leaf |
提供在 m TLS handshake 中使用的客户端证书,允许服务器对客户端进行身份验证并验证证书链。这样可以确保连接的安全和授权。 |
X-Amzn-Mtls-Clientcert |
携带完整的客户证书。允许目标在 m handsha TLS ke 过程中验证证书的真实性、验证证书链并对客户端进行身份验证。 |
X-Amzn-Version TLS |
表示用于连接的TLS协议版本。它有助于确定通信的安全级别、解决连接问题和确保合规性。 |
X-Amzn-Cipher-Suite TLS |
表示用于保护连接的加密算法组合。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,包括CORS、和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 |
使用 no-sniff 指令,可防止浏览器猜测资源的MIME类型,从而增强网络安全性。它确保浏览器仅根据声明的内容类型解释内容 |
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
。可用值为true
或false
。默认值为 true
。
使用以下命令将 Application Load Balancer 侦听器配置为不插入server
标头:
aws elbv2 modify-listener-attributes \
--listener-arn ARN
\
--attributes Key="routing.http.response.server.enabled",Value=false
限制:
-
标题值可以包含以下字符
-
字母数字字符:
a-z
A-Z
、和0-9
-
特殊字符:
_ :;.,\/'?!(){}[]@<>=-+*#&`|~^%
-
-
该属性的值大小不能超过 1K 字节。
-
Elastic Load Balancing 会执行基本的输入验证以验证标头值是否有效。但是,验证无法确认特定标头是否支持该值。
-
为任何属性设置空值都将导致 Application Load Balancer 恢复到默认行为。
-
标题只会插入代码为 2xx 或 3xx 的HTTP响应中
有关更多信息,请参阅 侦听器属性。