3.2 Strict TLS (严格 TLS)
提供以下建议以帮助防止 SSL 剥离 (SSL Stripping) 攻击 (该攻击总结在 [RFC7457] 的第 2.1 节中):
-
在应用协议允许实现或部署在严格 TLS 配置和从未加密流量动态升级到 TLS 保护流量 (例如 STARTTLS) 之间进行选择的情况下, 客户端和服务器应该优先使用严格 TLS 配置。
-
应用协议通常提供一种方式让服务器在初始协议交换期间提供 TLS, 有时还提供一种方式让服务器宣传对 TLS 的支持 (例如, 通过指示需要 TLS 的标志); 不幸的是, 这些指示是在通信通道加密之前发送的。客户端应该尝试协商 TLS, 即使服务器没有传达这些指示。
-
HTTP 客户端和服务器实现必须支持 HTTP 严格传输安全 (HTTP Strict Transport Security, HSTS) 标头 [RFC6797], 以便允许 Web 服务器宣传它们愿意接受仅支持 TLS 的客户端。
-
Web 服务器应该使用 HSTS 来指示它们愿意接受仅支持 TLS 的客户端, 除非它们以这样的方式部署, 即使用 HSTS 实际上会削弱整体安全性 (例如, 对于自签名证书使用 HSTS 可能会有问题, 如 [RFC6797] 的第 11.3 节所述)。
理由: 将未受保护和 TLS 保护的通信结合在一起为 SSL 剥离和类似攻击打开了道路, 因为通信的初始部分不受完整性保护, 因此可以被攻击者操纵, 其目标是保持通信处于明文状态。