浅析HSTS
浅析HSTS
一、HSTS是什么?
HSTS全称:HTTP Strict Transport Security,意译:HTTP严格传输安全,是一个Web安全策略机制。
二、HSTS解决什么问题?
它解决的是:网站从Http转跳到Https时,可能出现的安全问题。
一般从Http跳转Https的流程:

Client从Http切换到Https前是明文传输,因此是可以被Man-In-The-Middle劫持的,如下流程:

三、HSTS如何解决?
要解决从Http切换到Https被劫持的问题,只要一开始就没有Http请求即可,流程如下:

四、HSTS如何知道,哪些请求该转为Https,哪些不该转?
方案1. 最近一次请求的Https响应中(Response)中,带上HSTS Header:
Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]
- max-age:
- 必选,单位:秒。
- 意义:HSTS header过期时间,一般设置为1年,即31536000秒。而每次Response Header都带上HSTS Header,则可不断刷新其过期时间。
- includeSubDomains:
- 可选。
- 意义:需要开启HSTS的域名/子域名。
- preload:
- 可选
- 意义:当加入了浏览器内置Preload List时才需要设置该项。
方案2. HSTS Preload List
方案1还是有个漏洞:
- 如果第一次访问网站A就被劫持了,哪方案1岂不白搭?
- 清Cookies或者HSTS Header过期了,下次访问岂不又风险重重?
基于以上问题,就需要方案2(HSTS Preload List):
官方说明:
This is a list of sites that are hardcoded into Chrome as being HTTPS only.
HSTS Preload List是一个站点列表,它被hardcode写入Chrome中,列表中的站点将会默认使用 HTTPS 进行访问。
Most major browsers (Chrome, Firefox, Opera, Safari, IE 11 and Edge) also have HSTS preload lists based on the Chrome list. (See the HSTS compatibility matrix.)
主流浏览器(Firefox, Opera, Safari, IE 11 and Edge)都有和Chrome一样的HSTS Preload List。
这样,就直接从源头上封死Http转跳Https时被劫持的可能性。
五、其他相关:
- Chrome的HSTS Preload List哪里可以看到?
- 如何加入HSTS Preload List?
- 加入HSTS Preload List的副作用?
- 因为浏览器会强制跳转Https,所以以后将无法使用Http再访问网站,如果不能保证持续提供Https服务,最好还是别折腾了。
浅析HSTS的更多相关文章
- NGINX: 配置 HSTS
参考: [ 浅析 HSTS - 博客园 ] [ HTTP HSTS协议和 nginx - 运维生存时间] [ HSTS ] Header: Strict-Transport-Security Stri ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ...
- netty5 HTTP协议栈浅析与实践
一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...
- Jvm 内存浅析 及 GC个人学习总结
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
随机推荐
- 《剑指offer》和为S的连续正数序列
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- 怎么在PDF上进行文字修改
文件相信大家不论是工作中还是在学习生活中都会有遇到,有时候我们会遇到PDF文件中的文字有时候会有错误的时候,这个时候就需要对修改PDF文件上的文字,那么具体要怎么做呢,PDF文件需要借助软件才可以编辑 ...
- [转载 java 技术栈] eclipse 阅读跟踪 Java 源码的几个小技巧!
本文基于Eclipse IDE,我们每天都使用的IDE其实提供了很多强大的功能,掌握它们,往往能够事半功倍. 1.Quick Type Hierarchy 快速查看类继承体系. 快捷键:Ctrl + ...
- 设置SecureCRT的背景色和文字颜色方案
一.对于临时设置,可以如下操作: 首先options -- session - appearance 此处可以设置临时的窗口背景,字体颜色,大小等等,为什么说是临时,是因为只要你关闭连接后,又会恢复. ...
- Redis实战 - 4.Key
Redis 键(key) Redis 键命令用于管理 redis 的键. DEL key 该命令用于在 key 存在时删除 key. 127.0.0.1:6379> set w3ckey red ...
- itextsharp html转成pdf 特殊符号异常处理
项目中使用html转成pdf ,遇到包含& 特殊字符就会出错. 比如:<p>&</p>使用该html输出成pdf就会报异常 解决方案:需使用html转义符< ...
- SpringBoot 添加mybatis generator 自动生成代码插件
自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...
- webpack打包优化之外部扩展externals的实际应用
目录 前言 externals定义 用法 string array object function regex 实际案例 打包时间 打包之后包的大小 浏览器加载 需要注意 参考 前言 使用vue-cl ...
- MFC-注册热键
0.测试环境 VS2015专业版,基于对话框的MFC程序, 例子地址:http://pan.baidu.com/s/1qX9IRec 1.MFC工程设置 类向导->消息->WM_HOTKE ...
- 将source类中的属性值赋给target类中对应的属性
/** * 对象的属性值拷贝 * <p> * 将source对象中的属性值赋值到target对象中的属性,属性名一样,类型一样 * <p> * example: * <p ...