使用 HTTP/2 时启用 HSTS 标头有什么意义吗?

信息安全 tls hsts ssls带 http2
2021-08-21 12:33:59

作为对 SSLstrip 等攻击的保护,只要正确配置了标头的属性,HSTS 标头就可以防止攻击者将连接从 HTTPS 降级为 HTTP。

然而,根据维基百科的说法,HTTP/2 虽然没有强制加密,但在现代浏览器中通过强制 TLS 连接实现

在这种情况下,在使用 HTTP/2 时启用 HSTS 标头是否有任何意义?攻击者可以强制客户端使用 HTTP/1 并反过来 SSLstrip 连接吗?HTTP/2 是否足够,它会使 HSTS 标头过时吗?

2个回答

是的,仍然需要 HSTS,包括 HSTS 预加载。

浏览器连接到 HTTP/2 的方式是通过一个看起来与 HTTP/1 的 URL 完全相同的 URL,所以它不知道它一定是 HTTP/2 只是看 URL。如果给定http://URL ,它将尝试纯明文 HTTP 为了让浏览器不尝试普通的HTTP(并且不会受到来自流氓WiFi AP等的攻击),URL必须是https://(然后通过ALPN进行HTTP/2升级),以及确保不管的方式用户在地址栏或外部链接中输入的内容是使用 HSTS。

您在前两点上都是正确的。

作为对 SSLstrip 等攻击的保护,只要正确配置了标头的属性,HSTS 标头就可以防止攻击者将连接从 HTTPS 降级为 HTTP。

是的,因此 HSTS 标头告诉浏览器仅通过安全连接访问 Web 服务器,从而拒绝通过 HTTP 的连接,并将它们重定向到 HTTPS。

然而,根据维基百科的说法,HTTP/2 虽然没有强制加密,但在现代浏览器中通过强制 TLS 连接实现。

是的,大多数主流浏览器只支持 HTTP/2 over HTTPS。

在这种情况下,在使用 HTTP/2 时启用 HSTS 标头是否有任何意义?攻击者可以强制客户端使用 HTTP/1 并反过来 SSLstrip 连接吗?HTTP/2 是否足够,它会使 HSTS 标头 > 过时吗?

实现 HTTP/2 的 Web 服务器不会强制使用 HTTPS 连接。仅通过 TLS 支持 HTTP/2只是浏览器的要求HTTP/2 是为 HTTP URI 和 HTTPS URI 定义的。

当用户尝试通过 HTTP 加载网站时会发生什么?如果 HTTP/2 失败,HTTP/1.1 是备用协议。因此,启用 HTTP/2 的站点可能仍然很容易受到 SSL-striping-MitM 攻击。