HTTPS-Only模式的连接模型
当前浏览器默认使用不安全的http协议发起初始连接,攻击者可借此实施中间人攻击。HTTPS-Only模式采用以下创新设计:
- 行业标准模型(左图):依赖HSTS机制,需先通过http请求(步骤1)获取重定向到https的响应(步骤2),存在初始请求被劫持风险
- HTTPS-Only模型(右图):直接尝试https连接(步骤1),失败时向用户显示安全警告(步骤3),由用户决定是否降级到http
技术实现细节
-
核心升级机制
- 通过
nsHTTPSOnlyUtils::ShouldUpgradeRequest()
函数自动将http URL重写为https - 覆盖顶层文档加载和子资源(图片/样式表/脚本)
- 使用
HTTPS_ONLY_EXEMPT
标志设置例外规则
- 通过
-
超时优化策略
- 顶层https请求3秒无响应时,自动发起http背景请求(
nsHTTPSOnlyUtils::PotentiallyFireHttpRequestToShortenTimout()
) - 若http先响应则取消https请求,显示异常页面
- 顶层https请求3秒无响应时,自动发起http背景请求(
-
安全机制集成
- WebSocket升级(
nsHTTPSOnlyUtils::ShouldUpgradeWebSocket()
) - 混合内容拦截与CORS策略适配(
nsHTTPSOnlyUtils::IsSafeToAcceptCORSOrMixedContent()
)
- WebSocket升级(
升级成功率数据
- 顶层文档升级:73%的http链接可成功升级到https(2020年11-12月数据)
- 整体安全加载:
- 92.8%的URL原生使用https
- 3.5%通过升级实现https
- 仅3.7%因用户明确豁免保持不安全连接
该技术已推动96.3%的页面加载实现https加密,显著提升Web整体安全性。