随着网络技术手段不断地更新迭代,互联网安全对于企业和个人的重要性都越来越高。因此越来越多的服务商都开始偏向为用户提供更安全的在线内容访问。


中间人攻击

为了保障网站内容安全,诞生了不少加密方式。目前应用最为广泛的加密方式是 TLS(安全传输层协议),它脱胎自广为人知的 SSL(安全套接字协议),并和 SSL 一起组成了 SSL/TLS 加密,可以让 HTTP 变身为 HTTPS,为用户和网站提供安全的数据传输。

正常来讲,使用 HTTPS 和可靠的 SSL/TLS 证书访问网站时,加密的传输是安全的。但是因为早期认证机构容易被黑客攻击,进而导致证书安全性漏洞,同时一些常规使用习惯也可能造成安全漏洞,比如我们在输入网址时,并不会输入包含加密协议 https:// 的完整 URL,而是只输入网站网址,而浏览器的自动访问则会访问不安全的 http://。这些存在的漏洞为中间人攻击提供了便利。

1.png

△ 中间人攻击流程图

中间人攻击表面上看是系统 A 与系统 B 建立加密连接,但是实际上数据流会被第三方重定向,让加密连接从系统 A 运行到系统 C,然后才重定向到系统 B。这让系统 C 的控制者(通常是攻击者)可以完整地查看、记录以及操纵数据流量。攻击者还通过这种方式将系统 C 作为网络服务器呈现给系统 A,并给用户端呈现错误的浏览页面。这种攻击在银行或者电商行业会直接影响用户在线交易,给用户造成严重损失。

除去证书本身的问题,一些粗心大意的使用习惯也很容易造成安全漏洞。比如现在很多公共场合都会提供公共 WLAN,我们已经习惯链接并使用,不会去检查这个 Internet 是谁提供的。黑客可以将自己的计算机设置为热点,并轻易获得链接这个热点的用户的全部数据流,如果正好有人用这个网络链接过银行等业务,那黑客很容易通过这个获取用户网银密码,造成财务损失。

因此,互联网工程任务组(IETF)在 2012 年提出了针对该安全性问题的一种解决方案:在 RFC 6797 中指定了 HTTPS 扩展的 HTTP 严格传输安全协议(HSTS)。


什么是 HSTS

HSTS(HTTP Strict Transport Security,HTTP 严格传输安全协议)是一种安全机制,旨在保护 HTTPS 连接免受中间人攻击和会话劫持。它让网站管理员在 HTTPS 的基础上,通过 HTTP 头信息向浏览器发送信号,在一个时间段内以 SSL / TLS 加密的形式检索网站。

这个 HTTP 头信息在服务端显示为:Strict-Transport-Security,它包含强制性的信息 max-age,也包含了可选参数 includeSubDomains 和 preload 方便配置:

2.png

  • max-age指 HSTS 功能生效的时间,以秒为单位。例如 31536000 秒代表一年。

  • includeSubDomains如果指定,则表示域名(例如:upyun.com)对应的每个子域名(例如:www.upyun.com 或 123.example.upyun.com),浏览器在访问时也都会强制采用 HTTPS 进行访问。

  • preload:如果指定,则表示此域名同意申请加入由 Google 发起的 Preload List,申请地址[https://hstspreload.org/]

在服务端配置完成头信息后,当互联网用户首次访问网站时,浏览器将从 Strict-Transport-Security 头信息中获取以下指令:

  • 指向相应网站的所有未加密链接都必须被加密链接覆盖(http:// 到 https://)。

  • 如果不能保证连接的安全性(例如:证书无效),则必须终止该连接。同时向用户显示错误消息。

3.png

△ 未保证安全性而拒绝访问的提示


如何开启 HSTS

如果是对安全性要求较高的网站,一般都会选择开启 HSTS 。

4.png

△ 开启 HSTS 后,网站安全评级达到 A+

但是 HSTS 并不是随意开启的,它需要支持它的浏览器。目前市场上支持 HSTS 的浏览器如下:(对于那些不支持的浏览器,会忽略此响应头,对用户的访问无影响,可以不用担心)

5.png

而具体开启 HSTS 则可以登陆又拍云控制台,依次进入:服务 > 功能配置 > HTTPS > HSTS,点击管理进行配置开启。

6.png

又拍云自 17 年起就已经支持配置 HSTS,配置步骤简单,操作方便。但是这里需要特别提醒的是,如果有参数设置不当可能会导致网站无法访问,大家如果遇到问题可以直接联系我们的客服小姐姐哦~


HTTPS 网站的预加载列表

当然光靠 HSTS 并不是万无一失的,因为 HSTS 的响应头是由服务器返回的,需要用户先发起访问才能获取到这个响应头。获取响应头后才会进行强制 HTTPS 访问操作。这也就意味着每次访问还是容易受到攻击风险。

为尽可能的减小这种风险,目前市面上所有的浏览器都加入了 Google 提供的 HSTS Preload List。只要加入到这个列表中,所有的通过浏览器访问请求都会强制走 HTTPS,在很大程度上可以杜绝“第一次”访问的劫持,最大限度地提高 HTTPS 访问的安全性。

7.png

如果你需要将自己的网站加入 HSTS Preload ,那必须确保符合如下基本要求:

  • 所有网站页面都必须使用有效的 SSL 证书

  • HTTP URL 必须定向到同一主机的 HTTPS URL

  • 所有子域(包括 www 子域)必须支持 HTTPS 且可用

  • 必须通过具有以下参数的域名来传递 HSTS 头信息:

    8.png
  • 网站需要始终满足上诉要求,否则会被自动删除

在信息安全越来越重要的今天,及时更新网站的安全手段,维护网站和用户的安全,避免因一时的疏忽造成损失才是最好的选择。