HSTS确保用户访问的是安全版本

2022-01-14 18:21:33  12 浏览  0 评论   赞

采用HSTS协议的网站将保证浏览器始终连接到该网站的HTTPS加密版本,不需要用户手动在URL地址栏中输入加密地址。该协议将帮助网站采用全局加密

http严格传输安全(hsts)是一种安全功能,web 服务器通过它来告诉浏览器仅用HTTPS来与之通讯,而不是使用 HTTP。HSTS 是网站从 HTTP 到 HTTPS 中网站性能及安全优化非常重要的一个步骤,能够解决和兼容 HTTPS 中的一些不足之处。HSTS 在全站 HTTPS 下有一个较大的正向作用,推荐使用。

HSTS确保用户访问的是安全版本

图24648-1:

国际互联网工程组织 IETE 正在推行一种新的 Web安全协议HTTP Strict Transport Security(HSTS)。采用 HSTS 协议的网站将保证浏览器始终连接到该网站的 HTTPS 加密版本,不需要用户手动在 URL 地址栏中输入加密地址。该协议将帮助网站采用全局加密,用户看到的就是该网站的安全版本。

hsts 的作用是强制客户端(如浏览器)使用 HTTPS 与服务器创建连接。服务器开启 HSTS 的方法是,当客户端通过 HTTPS 发出请求时,在服务器返回的超文本传输协议响应头中包含 Strict-Transport-Security 字段。非加密传输时设置的 HSTS 字段无效。

通常我们访问一个网站时,一般在浏览器中只输入网站地址,而不输入协议名。比如访问子凡的泪雪博客,如果直接输入网址 或时,这就给了中间人攻击的一个机会,重定向会可能会被破坏,从而定向到一个恶意站点而不是应该访问的加密页面。HTTP 严格传输安全(HSTS)功能使 Web 服务器告知浏览器绝不使用 HTTP 访问,在浏览器端自动将所有到该站点的 HTTP 访问替换为 HTTPS 访问。

即使你打开网站看到的是全站 HTTPS 状态 ,你是因为我们在服务器上做过301/302 跳转到 这个地址的, HTTPS 网站的做法是对用户的 HTTP 访问做 302 跳转到 HTTPS,并重新建连。(访问过程如下图)

HSTS确保用户访问的是安全版本

图24648-2:

hsts 的出现就是解决这些问题的。HSTS 的作用除了节省 HTTPS 通信 RT 和强制使用 HTTPS ,还包括:

hsts 的工作机制可描述如下:服务器端配置支持 HSTS 后,会在给浏览器返回的 HTTP 首部中携带 HSTS 字段。浏览器获取到该信息后,会将所有 HTTP 访问请求在内部做307跳转到 HTTPS,而无需任何网络过程,从而提高了兼容性,这个机制对于不支持 HTTPS 的搜索引擎来说也是非常友好的做法。

目前大部分浏览器对 HSTS 的支持已经相当完美,具体各浏览器和版本的支持情况可以在上查看。 但是 HSTS 是有缺陷的,第一次访问网站的客户端,HSTS 并不工作。 要解决这个问题,就要了解我们下面要讲解的 HSTS preload list。

从申请到审核通过,时间在几天到几周不等。值得一提的是,从审核通过到正式加入到 Chrome 的 stable release 版本中还需要一段时间,因为要经过 canary、dev、beta 以及 stable progression。

简单说就是强制客户端使用 HTTPS 访问页面。有效避免了中间人对 80 端口的劫持。但是这里存在一个问题:如果用户在劫持状态,并且没有访问过源服务器,那么源服务器是没有办法给客户端种下 Strict-Transport-Security 响应头的(都被中间人挡下来了)。

启用 HSTS 不仅仅可以有效防范中间人攻击,同时也为浏览器节省来一次 302/301 的跳转请求,收益还是很高的。我们的很多页面,难以避免地出现 http 的链接,比如 help 中的链接、运营填写的链接等,这些链接的请求都会经历一次 302,对于用户也是一样,收藏夹中的链接保存的可能也是 http 的。

而在 HSTS 中,307 可以被缓存,缓存时间根据 max-age 而定,一般建议缓存 1 年甚至更长。

纯 IP 的请求,HSTS 没法处理,比如 , 即便响应头中设置了 STS,浏览器也不会理会(未测试)

hsts 只能在 80 和 443 端口之间切换,如果服务是 8080 端口,即便设置了 STS,也无效(未测试)

如果浏览器证书错误,一般情况会提醒存在安全风险,然是依然给一个链接进入目标页,而 HSTS 则没有目标页入口,所以一旦证书配置错误,就是很大的故障了

如果服务器的 HTTPS 没有配置好就开启了 STS 的响应头,并且还设置了很长的过期时间,那么在你服务器 HTTPS 配置好之前,用户都是没办法连接到你的服务器的,除非 max-age 过期了。

本文作为一个科普性的文章,所以子凡就只是做一个简单的科普,后面也将会有具体的教程和使用方法。欢迎关注泪雪博客。

 

转载请注明:网创网 www.netcyw.cn/b24648.html

赞 ()
发表评论
  • 昵称
  • 网址
(0) 个小伙伴发表了自己的观点
    暂无评论

Copyright © 2018-2019 小王子工作室 版权所有 滇ICP备14007766号-3 邮箱:yangzy187@126.com