Https连接

Https通过加密传输和身份认证保证了http协议传输过程的安全性,然而这并不意味着你开启了https网站就绝对安全了。大部分用户都很少直接在地址栏输入https://,而是直接输入网址。此时浏览器默认发起http请求,再由服务端进行30x重定向(通常是301永久重定向)到https。如下图:

SSL剥离攻击

用户第一次发起的是http请求,存在被中间人劫持的风险。黑客可以用下图的方式劫持用户请求,阻止浏览器与服务器创建HTTPS连接。

1.用户向服务器发起http请求;

2.黑客劫持了这个http请求;

3.黑客向服务器发起相同的https请求,服务器返回数据;

4.黑客把返回的数据作为http请求的响应返回给用户;

5.用户拿到响应数据,其实所有通信内容(包括密码等敏感数据)已经被黑客知道了;

这种典型的中间人攻击方式被称为“SSL剥离攻击”,由Moxie Marlinspike在2009年黑帽大会上发表的《New Tricks For Defeating SSL In Practice》演讲中公开。

HSTS原理及实践

想要尽可能避免SSL剥离攻击,就得让浏览器一开始就发起https请求,而不是默认发起http请求。这个安全策略机制就是“HTTP Strict Transport Security”(HTTP严格传输安全),缩写HSTS。网站一旦启用HSTS策略,浏览器会强制使用HTTPS网站进行通信,以减少会话劫持风险。

服务器开启HSTS的方法很简单。当浏览器发起Https请求的时候,在响应头中增加Strict-Transport-Security字段。你可以在框架层添加,也可以nginx配置增加一行:

add_header Strict-Transport-Security "max-age=31536000";

浏览器收到这个字段后,在后续一段时间内向这个域名发起的任何请求,都必须采用https来发起连接。本博客已经开启HSTS,您可以打开浏览器的控制台查看响应头作为例子。HSTS Header的语法如下:

Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]
  • max-age:必选参数,代表着HSTS Header的过期时间,以秒为单位,比如设置1年,就是31536000。

  • includeSubDomains:可选参数,如果包含它,则当前域名及其子域名均开启HSTS保护。

  • preload:可选参数,表示申请将自己的域名加入浏览器内置列表,下文再详细介绍。

需要特别注意:

  • 在http请求的响应里带Strict-Transport-Security不会生效。

  • 标记了HSTS的网站,如果服务器的TLS证书无效,用户不能选择忽略浏览器的警告继续访问网站。这还可以避免伪造证书的风险。

保护首次请求

HSTS只能在第二次请求的时候生效,不能保护首次请求,因为首次访问的时候浏览器还未收到HSTS。解决这个问题当前有两个方案,一个是把HSTS信息加入到DNS记录中,但这需要保证DNS的安全,目前应用并不广泛;另一个是把HSTS信息加入到浏览器中,即浏览器的Preload List。

Google Chromium维护的HSTS Preload List项目,是目前业界的事实标准,Chrome/FireFox/Safari/IE都在使用。一旦加入这个列表,以后浏览器直接输入你的网站域名,首次请求就默认走https协议。

加入Preload List的方式很简单,访问https://hstspreload.org/,输入你的网站域名即可。添加的域名需要满足以下要求:

  • 根域名和所有子域名均使用https协议并具备有效的证书;

  • 对http请求提供重定向;

  • 根域名的HTTP响应头中,加入HSTS Header,必须包含includeSubDomains和preload参数,过期时间最短不少于18周(10886400秒)。

总结

SSL剥离攻击可以劫持用户发起的http请求,让服务端的https配置形同虚设。因此需要开启HSTS,强制客户端使用https连接,保障网站的安全。

参考文献

  1. https://tools.ietf.org/html/rfc6797

因为此网站使用了 hsts_HSTS原理及实践相关推荐

  1. PHP网站安装程序的原理及代码

    原文:PHP网站安装程序的原理及代码 原理: 其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安 ...

  2. 读书笔记:大型网站技术架构-核心原理与案例分析

    李智慧<大型网站技术架构-核心原理与案例分析> 性能 可用性 伸缩性 扩展性 安全性 总结 这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰.主要围绕架构 ...

  3. 访问网站报错‘您目前无法访问XXXX 因为此网站使用了 HSTS

    使用Chrome测试某一个网站时,之前一直可以正常访问, 突然再次访问就显示:"您目前无法访问XXXX 因为此网站使用了 HSTS" 使用IE之前也是可以正常访问的, 但是,现在也 ...

  4. Google Chrome浏览器出现:您目前无法访问 XX.XX.XX.XX,因为此网站发送了 Google Chrome 无法处理的杂乱凭据。

    Google Chrome访问https页面显示ERR_CERT_INVALID,以往版本可以选择跳过,继续访问,但是新版本Chrome不允许继续,且提示: 您的连接不是私密连接 攻击者可能会试图从 ...

  5. Chrome访问网站报错:因为此网站发送了Chrome无法处理的杂乱凭据。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常

    问题: 因为此网站发送了Chrome无法处理的杂乱凭据.网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常. 解决: 当前页面点击任意空白处,直接键盘输入"thisisunsafe& ...

  6. 解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常

    这里写自定义目录标题 问题: 描述: 概念解释: 解决: 网上最多的解决方案 实际解决 参考 问题: 您目前无法访问 因为此网站使用了 HSTS.网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复 ...

  7. 谷歌浏览器提示,您目前无法访问,因为此网站使用了HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复

    在本地建网站时,使用本地hosts转向域名,使用谷歌浏览器访问时出现了,您目前无法访问,因为此网站使用了HSTS.网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复. 解决方法: 1.在谷歌浏览器 ...

  8. (2022年12月)解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常

    1.问题描述: 您目前无法访问 因为此网站使用了 HSTS.网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常 2.概念解释: HSTS:HSTS 是 HTTP 严格传输安全(HTTP Str ...

  9. Webpack原理与实践

    简单了解了几个常用的插件,一般适合用于任何类型的项目,不管是否使用了框架.webpack为每个工作环节都预留了合适的钩子,扩展时只需要找到合适的时机去做合适的事情. 写在前面 webpack插件机制的 ...

  10. <<浏览器工作原理与实践>>读书笔记

    1. 进程和线程的区别 概念: 进程:操作系统进行资源分配和调度的基本单位:程序的运行实例:(在我们启动一个程序的时候,操作系统会为该程序创建一块内存空间,用来存放代码,运行数据,和执行任务的主线程, ...

最新文章

  1. [原创]Java性能优化权威指南读书思维导图
  2. 删除目录下大量小文件和清空大文件
  3. 类和对象—对象特性—静态成员函数
  4. reactjs中收集表单数据:非受控组件和受控组件
  5. OCR识别缺点_福利:OCR大全
  6. Python中可变数据类型和不可变数据类型
  7. CheckedComboBoxEdit 重置初始化值的方法
  8. Android 上传图片实例,java上传图片接口
  9. asp.net core部署到iis
  10. 翻译:与包括索引列:5级阶梯SQL Server索引
  11. pythonsocket中tcp通信接收不到数据_简单说说Python Socket编程步骤?
  12. c语言mud文字武侠游戏,文字武侠mud游戏,纯文字武侠mud游戏手机版预约 v1.0-手游汇...
  13. 如何让我们的软件跳过360和金山毒霸的“随意拦截”?
  14. Spring源码解析(五)-Bean的实例化流程(上)
  15. 请思考用人单位要的是什么?死记硬背学专业能将你支撑到哪里?
  16. python入门教程慕课网_秒懂系列 | 史上最简单的Python Django入门教程
  17. PKCS1_SignatureScheme_PSS
  18. 数字图像处理之伽马(gamma)变换
  19. vue 实现文字语音播放
  20. 渗透测试业务逻辑测试汇总—专项篇

热门文章

  1. 10. 大型网站核心架构要素
  2. 6. ubuntu 下 mysql 数据库迁移
  3. ANTS Memory Profiler - NET内存泄漏分析工具
  4. 应用安全-安全设备-Waf系列-软Waf-安全狗(Safedog)
  5. ubuntu16.04安装中文输入法
  6. 2019年 iPad无法充电
  7. MySQL 性能优化神器 Explain 使用分析
  8. atom无法安装插件的解决方法之一
  9. 20145226夏艺华 Exp6 信息搜集与漏洞扫描
  10. 操作系统 汤子瀛版 读书总结