Insecure HTTP Header Setting: HTTP Strict Transport Security (HSTS)
不安全的 HTTP 标头配置:HTTP 严格传输安全 (HSTS)
描述
HTTP 严格传输安全 (HSTS) 是一种 Web 安全策略机制,Web 服务器通过它声明兼容的用户代理(如 Web 浏览器)必须仅使用安全 (HTTPS) 连接与其进行交互。服务器通过名为“Strict-Transport-Security”的 HTTP 响应标头字段将 HSTS 策略传达给用户代理。HSTS 策略指定了用户代理必须仅以安全方式访问服务器的时间段。
当 Web 应用程序向用户代理发出 HSTS 策略时,兼容的用户代理的行为如下:
- 自动将引用 Web 应用程序的任何不安全 (HTTP) 链接转换为安全 (HTTPS) 链接。(例如,在访问服务器之前,http://example.com/some/page/ 将被修改为 https://example.com/some/page/。)
- 如果无法确保连接的安全性(例如,服务器的 TLS 证书是自签名的),用户代理将显示错误消息并且不允许用户访问 Web 应用程序。
建议
配置您的 Web 服务器以将 HTTP 请求重定向到 HTTPS。
例如,对于 Apache,您应该在 httpd.conf 中进行修改。有关更多配置,请参阅外部参考部分。
# 加载模块
LoadModule headers_module modules/mod_headers.so
# 将所有 HTTP 重定向到 HTTPS (可选)
<VirtualHost *:80>
ServerAlias *
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
# HTTPS 主机配置
<VirtualHost *:443>
# 使用 HTTP 严格传输安全 (HSTS) 强制客户端仅使用安全连接
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# 进一步的配置在此处进行
[...]
</VirtualHost>
链接
标准
- OWASP_ASVS_L1:
- V14_4_5
- OWASP_ASVS_L2:
- V14_4_5
- OWASP_ASVS_L3:
- V14_4_5
- PCI_STANDARDS:
- REQ_2_2
- REQ_3_6
- REQ_3_7
- REQ_4_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY252
- SECURITY212
- SECURITY213