近日,本站在https://hstspreload.org/提交的HSTS Preload申请终于落地了,这意味着所有支持HSTS并且更新了预载列表的浏览器都能在访问本站时强制使用HTTPS协议(包括首次访问)。这样说可能还是不太好理解,那么我们先从HSTS说起:
HSTS是什么?
HSTS(HTTP Strict Transport Security)是一种安全机制,它强制浏览器只通过 HTTPS(加密的 HTTP)来连接特定的网站。换句话说,一旦浏览器知道某个网站开启了 HSTS,它就会自动将所有对该网站的请求升级为 HTTPS 请求,即使用户输入的是 HTTP 地址。
HSTS的作用?
- 提升安全性: 防止中间人攻击,保护用户数据。
- 改善用户体验: 省去浏览器从 HTTP 重定向到 HTTPS 的步骤。
HSTS Preload又是什么?
HSTS Preload 是一个预加载的域名列表。这个列表由各大浏览器厂商维护,一旦某个网站的域名被添加到这个列表中,使用这个列表的浏览器都会在首次访问时强制HTTPS协议。
HSTS Preload列表主要是由Google维护的,大部分浏览器都在用这个列表。
核心作用?
更高效:从浏览器首次访问这个域名的时候就已经强制走HTTPS协议了,省去了HTTP强制跳转HTTPS的步骤。
安全性方面:和301跳转的区别就是,如果HTTPS跳转前就在HTTP这里下料了,还是有被劫持到危险网站的风险存在。尽管我觉得这种情况非常罕见。
注意事项?
原本想说缺点的,但其实“安全性拉满导致的麻烦”不能算是缺点吧。
如果主域名已经成功加入了 HSTS 预加载列表,那么即使子域名没有单独配置 HSTS header,浏览器也会强制使用 HTTPS 来访问这些子域名,这会影响到那些不是很方便配置SSL证书的服务。例如局域网站点。
举个例子:我在内网搭建了一个网站,想用Let's Encrypt配置免费SSL证书的话就只能通过DNS验证的方式,而不能简单通过文件验证(因为内网所以平台无法访问验证)然后随手配个自动续签。
另一方面就是SSL证书不能过期,一旦自动续签失败了或者忘记了这回事,那可能就麻烦了
总结
HSTS是一个非常安全的机制,而HSTS Preload把它的安全性提到了最高。但是对于无法稳定确保SSL证书的使用的,就不建议去报HSTS Preload了。添加HSTS Header即可让浏览器在下次访问时开始强制使用HTTPS,HSTS Preload更适合那些对安全性有极高要求的站点,能从用户的首次访问开始就提供保护。
关于HSTS Preload的申请和状态查询,都可以在https://hstspreload.org/这个网站进行。如果本文有什么纰漏欢迎指出~~
Comments 1 条评论
博主 KotoriK
HSTS了就不存在回到HTTP的可能性了