本文最后更新于 2743 天前,其中的信息可能已经有所发展或是发生改变。
HSTS 可以防止默认以 HTTP 方式访问站点的时候可被中间人重定向攻击的问题。
http 是明文传输的,为了防止数据被截获和修改,我们会为站点做 https 同时做上 https 跳转。然而在刚打开网站的时候是以 http 方式,可以被攻击者重定向到中间代理服务器上并伪造一个假证书以及 XSS。
于是乎有了 HSTS ( HTTP Strict–Transport–Security ),通过在 HTTP Header 上添加 Strict–Transport–Security 字段。可以告诉浏览器禁止以 HTTP 方式访问资源,同时维持一段时间里浏览器只会以 https 方式访问该站点(http 会自动被浏览器 307 重定向)。
只添加 Header 通知浏览器使用 HTTPS 并没有完全预防,在访问一个未知站点的时候还是会使用 HTTP 。所以主流浏览器会内置 HSTS 主机列表并定期更新。
Nginx 配置
[code]add_header Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”;[/code]
用浏览器访问一次站点,在以后的 63072000 秒浏览器都会用 HTTP 方式访问站点。
IncludeSubDomains 包含了所有子域名以后访问都使用HTTPS
preload 允许浏览器把站点预加载到 HSTS 主机列表
之后在这里申请加入 HSTS 预加载列表 https://hstspreload.org