什么是 HSTS

HSTS(HTTP Strict Transport Security 的简称) allows a site to request that it always be contacted over HTTPS

HSTS 使页面打开时总是以 HTTPS 协议打开。
介绍: https://www.chromium.org/hsts
语法:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Str...

HTST 作用

为什么要用 HSTS

HSTS 可以很大程度上解决 SSL 剥离攻击,比 HTTP -> HTTPS 重定向这种要更安全,可以完全防止 HTTP 请求被攻击的情况。因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了 HTTP。这个是解决首次进入浏览器未生效的问题。

当然也没有完美的方案,使用 HSTS 仍有问题未解决:
image.png

chrome 中的表现

image.png
chrome 在实现 HTST 的时候,会自动使用 307 重定向: http -> https

HTTP 情况处理对比

如果 HTTPS 证书无效,将阻止你建立连接。 通常来说,如果 HTTPS 证书无效(如:过期、自签名、由未知 CA 签名等),浏览器会显示一个可以规避的警告。 但是,如果站点有 HSTS,浏览器就不会让你绕过警告。 若要访问该站点,必须从浏览器内的 HSTS 列表中删除该站点。

Preloaded HSTS

为了解决全新安装的用户或清除本地状态的用户受到攻击,Chrome 维护了一个 HSTS 预加载列表(其他浏览器也根据 Chrome 列表维护列表):Preloaded HSTS sites在这些列表的网址将强制使用 HTST 规则而无无需在服务中配置。 这也能解决首次加载 HTTP 被攻击的问题。
注意:.dev 在 Preloaded 里, .dev 的都会强制转 https

浏览器支持

image.png

在浏览器中管理 HSTS

chrome 清理:chrome://net-internals/#hsts
image.png
Preloaded HSTS 这里里面有的,在浏览器里是无法清除的。


specialCoder
2.2k 声望168 粉丝

前端 设计 摄影 文学