HSTS 需要注意的问题

我很早就在我的网站上开启了这个功能。并加入了 hstspreload.org ,但今天偶然发现 HSTS Preload 并没有生效。原因是我之前迁移网站时,将 cloudflare 的页面规则修改了,导致不符合 hstspreload 的要求。

HSTS 是什么

HTTP Strict Transport Security 简称 HSTS。

简单来说,在网站中启用这个标头可以让浏览器只通过 https 协议进行访问,避免浏览器或用户访问 http 地址时被被劫持。比配置 “HTTP 到 HTTPS(301)重定向” 要安全。

需要注意的问题

https 跳转

HSTS Preload 要求,域名应该由 http 跳转到对应的 https。不能直接跳转到子域名。

而我的博客使用 www 子域名,我正好犯了这个错误,迁移时不慎将页面规则修改成:主域名 http 直接跳转到子域名 www 的 https,导致不符合 HSTS Preload 的要求。

如果不希望使用主域名而是使用子域名(例如 www),那么正确的跳转顺序应该为:

  1. 从主域名的 http 跳转到主域名的 https
  2. 再由主域名的 https 跳转到子域名 www 的 https。

过期时间

Cloudflare 推荐的过期时间为 6 个月,最大可设置的时间为 12 个月,但 hstspreload.org 要求最低 1 年,推荐 2 年。

所以在 Cloudflare 上开启 hsts 时,要注意将 hsts 的 max-age 设置为 12 个月。

Built with Hugo
Theme Stack designed by Jimmy