HSTS 详解,让 HTTPS 更安全

简介: HSTS 详解,让 HTTPS 更安全随着互联网的快速发展,人们在生活中越来越离不开互联网。无论是社交、购物还是搜索,互联网都能给人带来很多的便捷。与此同时,由于用户对网络安全的不了解和一些网站、协议的安全漏洞,让很多用户的个人信息数据“裸露”在互联网中。

HSTS 详解,让 HTTPS 更安全
随着互联网的快速发展,人们在生活中越来越离不开互联网。无论是社交、购物还是搜索,互联网都能给人带来很多的便捷。与此同时,由于用户对网络安全的不了解和一些网站、协议的安全漏洞,让很多用户的个人信息数据“裸露”在互联网中。为此谷歌在 Chrome 68 版本后,其界面将会让使用者更容易了解 HTTP 网页是不安全的,并持续推动网站预设使用 HTTPS。但 HTTP 依旧可以访问使用,为此一些网站可以设置 HSTS 策略,以此来强制浏览器使用 HTTPS 与网站通信,来保障网站更加安全。

多了 SSL 层的 HTTP 协议
在聊 HSTS 之前,先来简单说下 HTTPS。简而言之,HTTPS 就是在 HTTP 下加入了 SSL 层,从而保护了交换数据隐私和完整性,提供对网站服务器身份认证的功能,简单来说它就是安全版的 HTTP。一般来说,HTTPS 主要用途有三个:一是通过证书等信息确认网站的真实性;二是建立加密的信息通道;三是数据内容的完整性。

图中是HTTPS的握手流程,相比 HTTP,HTTPS 传输更加安全。

所有信息都是加密传播,黑客无法窃听。
具有校验机制,一旦被篡改,通信双方会立刻发现。
配备身份证书,防止身份被冒充。
强制 HTTPS,保障数据安全
HSTS(HTTP Strcit-Transport-Securit)即 HTTP 严格传输安全, 是一种 Web 安全策略机制,可保护网站免受协议降级攻击和 cookie 劫持、中间人攻击。它允许 Web 服务器声明浏览器(或其他符合要求的用户代理)应用使用安全的 HTTPS 连接与交互,而不是通过不安全的 HTTP 协议。

使用 HSTS 策略后,在缓存时间内,对应的域名请求都将会自动转换为安全的 HTTPS 方法。若浏览器使用 HTTP 访问时,浏览器内部会通过 307 跳转为 HTTPS 访问,并添加响头 Non-Authorizatative-Reason:HSTS。并在 200 响应头字段返回 strict-transport-security: max-age=127800(2 天-自定义)。

与此同时,若用户访问到不安全的 HTTPS 网站时,浏览器会提示用户当前访问的网站不安全且禁止用户访问。如果仅使用 HTTPS 协议,虽然它也会提醒访问的网站的安全性存在问题,但依然可以通过忽略危险进行访问。使用 HSTS 策略后,浏览器会终止任何和所有安全传输错误或警告的任何安全传输连接尝试。也就不能忽略浏览器的不安全提示,无法进行不安全的访问连接,从而进一步保证用户的数据安全。

image

启用 HSTS 后,使用 HTTPS 访问后会在响应头添加 HSTS 响应字段:

Strict-Transport-Security: max-age=ExpireTime ;includeSubDomains

其中 max-age 是必选参数,可以是 ‘0’ 以上的任何值,一般设定缓存 180 天。这个变量定义HSTS 响应头在浏览器中的缓存时间。

Strict-Transport-Security: max-age=15552000

[includeSubDomains] 是可选参数,表示浏览器将此策略应用于当前域名的所有子域。

Strict-Transport-Security: max-age=15552000; includeSubDomains

[repload] 也是可选参数,表示使用 preload 预加载功能,此域名同意申请加入浏览器发发起的 Preload List。

Strict-Transport-Security: max-age=15552000; includeSubDomains; preload

HSTS 预加载,让安全无漏洞
需要注意的是,HSTS 协议必须是已经使用 HTTPS 访问并且缓存到浏览器时才会生效策略,如果用户使用的是 HTTP 协议或直接输入域名(浏览器默认使用 HTTP)的方式进行访问。如http://www.example.com , www.example.com 。虽然可以通过 301 等跳转将 HTTP 跳转到 HTTPS,但跳转使用的 HTTP 明文传输,这就给中间人攻击提供了可能。它可以在使用 HTTP 传输时对跳转信息的信息进行劫持,从而将跳转页面指向攻击者指定的页面。而且 301 跳转不会出现警示信息,客户端很容易在不知情的情况下被攻击劫持。

image

这时我们就可以使用 HSTS 的预加载功能,预加载可以将指定域名添加到 Preload List 名单中,添加到 Preload List 名单后,浏览器就只能通过 HTTPS 方法来进行访问,从而杜绝 HTTP 访问时被这类攻击的可能。您可以通过访问https://hstspreload.org/ 提交域名申请。但需要注意的是,添加后的域名将会硬编码到浏览器内,除非能保证域名会长久使用 HTTPS,否则请勿随意加入 Preload List。

HSTS 让网站安全等级更高一层
开启 HSTS 后,在 ssllabs 上进行测试,网站的安全等级会从 A 升级至 A+。

开启前等级为:A

开启后等级变为:A+

又拍云也提供HTTPS安全等级检测,有兴趣的小伙伴可前往:https://www.upyun.com/https 尝试下。

Chrome、Safari、Firefox 等浏览器都已经开始相继支持 HSTS,下图为各大浏览器对 HSTS 的支持情况(对于不支持的浏览器,又拍云会忽略此响应头,对用户的访问无影响):

对于那些安全性要求较高的网站,启用 HSTS 无疑是不错的选择。当用户访问网站域名时,都能够让用户使用 HTTPS 来请求网站资源,可以更加有效地保护网站和用户的数据安全,并且减少用户等待 301/302 的跳转时间,带来更好的用户体验。
原文地址https://www.cnblogs.com/upyun/p/10767548.html

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
2月前
|
安全 搜索推荐 前端开发
揭秘 HTTPS 加密协议:保护你的网上安全之道
揭秘 HTTPS 加密协议:保护你的网上安全之道
129 0
|
5月前
|
安全 算法 小程序
互联网并发与安全系列教程(17) - 生产环境配置HTTPS证书
互联网并发与安全系列教程(17) - 生产环境配置HTTPS证书
72 0
|
7月前
|
安全 中间件 Apache
【Web安全】不安全的HTTP方法
围绕渗透攻防层面来看不安全的HTTP方法漏洞的检测发现修复等手法。
263 1
|
5月前
|
安全 开发者
在HTTPS安全页面中加载HTTP不安全的内容,如何绕过安全警告?
在HTTPS安全页面中加载HTTP不安全的内容,如何绕过安全警告?
|
2月前
|
缓存 安全 应用服务中间件
HTTPS解密:安全通信的魔法之窗
HTTPS解密:安全通信的魔法之窗
41 0
|
3月前
|
JSON 安全 网络安全
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
344 0
|
3月前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
54 0
|
3月前
|
安全 网络协议 网络安全
HTTPS 存在哪些安全问题,有什么应对方案
HTTPS 是 HTTP 的安全版本,通过使用 SSL/TLS 协议对通信内容进行加密,提供了以下几个关键的安全特性:数据加密、身份认证和完整性保护。尽管 HTTPS 在很大程度上提高了安全性和数据传输的安全性,但仍然存在一些潜在的安全问题。以下是一些可能的问题以及相应的应对方案
|
4月前
|
安全 前端开发 算法
前端知识笔记(三十八)———HTTPS:保护网络通信安全的关键
前端知识笔记(三十八)———HTTPS:保护网络通信安全的关键
28 0
|
4月前
|
安全 前端开发 算法
前端知识(七)———HTTPS:保护网络通信安全的关键
前端知识(七)———HTTPS:保护网络通信安全的关键
23 0