HTTP 到 HTTPS 再到 HSTS 的转变

近些年,随着域名劫持、信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变。

HTTP

HTTP(超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是互联网数据通信的基础。它是由万维网协会(W3C)和互联网工程任务组(IETF)进行协调制定了 HTTP 的标准,最终发布了一系列的 RFC,并且在1999年6月公布的 RFC 2616,定义了 HTTP 协议中现今广泛使用的一个版本——HTTP 1.1。

HTTP 访问过程

HTTP 属于 TCP/IP 模型中的应用层协议,当浏览器与服务器进行互相通信时,需要先建立TCP 连接,之后服务器才会接收浏览器的请求信息,当接收到信息之后,服务器返回相应的信息。最后浏览器接受对服务器的信息应答后,对这些数据进行解释执行。

HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变

http 1.0 请求模式

HTTP 1.0 时,浏览器每次访问都要单独建立连接,这会造成资源的浪费。

后来HTTP 1.1可以在一次连接中处理多个请求,并且将多个请求重叠进行:

HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变

http 1.1 请求模式

HTTP 协议特点

  1. 简单、快速、灵活:当用户想服务器发送请求时,只需传送请求方法和路径即可,HTTP 允许传输任意类型的数据对象。并且 HTTP 协议简单易用,HTTP 服务器规模小,保证了网络通信的速度;
  2. 无连接、无状态:HTTP协议限制每次连接只处理单个请求,当服务器收到用户请求后就会断开连接,保证了传输时间的节省。同时HTTP协议对事务处理没有记忆能力,如果后续的请求需要使用前面的信息就必须重传数据;
  3. 管线化和内容编码:随着管线化技术的出现,HTTP 请求比持久性连接速度更快,并且当某些报文的内容过大时,为了减少传输的时间,HTTP 会采取压缩文件的方式;
  4. HTTP 支持客户/服务器模式

从 HTTP 到 HTTPS

HTTP 协议由于其简单快速、占用资源少,一直被用于网站服务器和浏览器之间进行数据传输。但是在数据传输的过程中也存在很明显的问题,由于 HTTP 是明文协议,不会对数据进行任何方式的加密。当黑客攻击窃取了网站服务器和浏览器之间的传输报文的时,可以直接读取传输的信息,造成网站、用户资料的泄密。因此 HTTP 不适用于敏感信息的传播,这个时候需要引入 HTTPS(超文本传输安全协议)。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure )是一种以计算机网络安全通信为目的的传输协议。在HTTP下加入了SSL层,从而具有了保护交换数据隐私和完整性和提供对网站服务器身份认证的功能,简单来说它就是安全版的 HTTP 。
 

HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变


HTTP、HTTPS 差异

HTTPS 访问过程

HTTPS 在进行数据传输之前会与网站服务器和Web浏览器进行一次握手,在握手时确定双方的加密密码信息。

具体过程如下:

  1. Web 浏览器将支持的加密信息发送给网站服务器;
  2. 网站服务器会选择出一套加密算法和哈希算法,将验证身份的信息以证书(证书发布 CA 机构、证书有效期、公钥、证书所有者、签名等)的形式发送给Web浏览器;
  3. 当 Web 浏览器收到证书之后首先需要验证证书的合法性,如果证书受到浏览器信任则在浏览器地址栏会有标志显示,否则就会显示不受信的标识。当证书受信之后,Web 浏览器会随机生成一串密码,并使用证书中的公钥加密。之后就是使用约定好的哈希算法握手消息,并生成随机数对消息进行加密,再将之前生成的信息发送给网站;

    HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变

  4. 当网站服务器接收到浏览器发送过来的数据后,会使用网站本身的私钥将信息解密确定密码,然后通过密码解密Web浏览器发送过来的握手信息,并验证哈希是否与 Web 浏览器一致。然后服务器会使用密码加密新的握手信息,发送给浏览器;
  5. 最后浏览器解密并计算经过哈希算法加密的握手消息,如果与服务发送过来的哈希一致,则此握手过程结束后,服务器与浏览器会使用之前浏览器生成的随机密码和对称加密算法进行加密交换数据。
  6. HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变


    HTTPS 握手过程

HTTPS 加密算法

为了保护数据的安全,HTTPS 运用了诸多加密算法:

  1. 对称加密:有流式、分组两种,加密和解密都是使用的同一个密钥。
    例如:DES、AES-GCM、ChaCha20-Poly1305 等。
  2. 非对称加密:加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥,公钥和算法都是公开的,私钥是保密的。非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。
    例如:RSA、DSA、ECDSA、 DH、ECDHE 等。
  3. 哈希算法:将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。
    例如:MD5、SHA-1、SHA-2、SHA-256 等。
  4. 数字签名:签名就是在信息的后面再加上一段内容(信息经过 hash 后的值),可以证明信息没有被修改过。hash 值一般都会加密后(也就是签名)再和信息一起发送,以保证这个 hash 值不被修改。

从 HTTPS 到 HSTS

但是当网站传输协议从 HTTP 到 HTTPS 之后,数据传输真的安全了吗?

由于用户习惯,通常准备访问某个网站时,在浏览器中只会输入一个域名,而不会在域名前面加上 http:// 或者 https://,而是由浏览器自动填充,当前所有浏览器默认填充的都是http://。一般情况网站管理员会采用了 301/302 跳转的方式由 HTTP 跳转到 HTTPS,但是这个过程总使用到 HTTP 因此容易发生劫持,受到第三方的攻击。

这个时候就需要用到 HSTS(HTTP 严格安全传输)。
 

HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变


HTTP 请求劫持

HSTS

HSTS是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。

HSTS 原理

HSTS 主要是通过服务器发送响应头的方式来控制浏览器操作:

  1. 首先在服务器响应头中添加 HSTS 响应头:Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
    此响应头只有在 https 访问返回时才生效,其中[ ]中的参数表示可选;
  2. 设置 max-age 参数,时间设置不宜过长,建议设置时间为 6 个月;
  3. 当用户下次使用 HTTP 访问,客户端就会进行内部跳转,并且能够看到 307 Redirect Internel 的响应码;
  4. 网站服务器变成了 HTTPS 访问源服务器。

开启 HSTS 后网站可以有效防范中间人的攻击,同时也会省去网站 301/302 跳转花费的时间,大大提升安全系数和用户体验。

开启 HSTS 后网站安全系数检测测评

开启 HSTS 以后,可以到 ssllabs 进行测试,网站的安全等级会进一步提升。

开启前等级为:A
 

HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变


开启后等级变为:A+

HTTP 到 HTTPS 再到 HSTS 的转变HTTP 到 HTTPS 再到 HSTS 的转变

总结

从 HTTP 到 HTTPS 再到 HSTS,网站的安全系数一直在上升,防止 DNS 劫持、数据泄密的力度也再加大。国内公有云服务商比如又拍云提供了完整的 HTTPS和HSTS的解决方案,不仅支持 SSL 证书快速申请,HTTPS 一键部署,还支持一键开启 HSTS,感兴趣的同学可以前往又拍云官网了解。

更多linux资讯请查看www.linuxprobe.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/162486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何零基础自学AI人工智能

随着人工智能(AI)的快速发展,越来越多的有志之士被其强大的潜力所吸引,希望投身其中。然而,对于许多零基础的人来说,如何入门AI成了一个难题。本文将为你提供一份详尽的自学AI人工智能的攻略,帮…

Git企业开发级讲解(五)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、bug 分⽀二、删除临时分支三、小结 一、bug 分⽀ 假如我们现在正在 dev2 分⽀上进⾏开发…

【数据结构与算法】线性表 - 顺序表

目录 1. 线性表2.顺序表3.顺序表的优缺点4.实现(C语言)4.1 头文件 seqList.h4.2 实现 seqList.c 1. 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见…

gRPC 的原理 介绍带你从头了解gRPC

gRPC 的原理 什么是gRPC gRPC的官方介绍是:gRPC是一个现代的、高性能、开源的和语言无关的通用 RPC 框架,基于 HTTP2 协议设计,序列化使用PB(Protocol Buffer),PB 是一种语言无关的高性能序列化框架,基于 HTTP2PB 保…

Qt布局技巧

可以先把控件放置了,再选中所有控件右键布局 或者是点击上面的:

cesium雷达效果(脉冲圆)

cesium雷达效果(脉冲圆) 下面富有源码 实现思路 使用ellipse方法加载圆型,修改ellipse中‘material’方法重写glsl来实现当前效果 示例代码 index.html <!DOCTYPE html> <html lang="en"><head>

CronExpression

CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年]序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - * / 4 日 是 1-31 , - * ? / L W 5 月 是 1-12 or JA…

Matlab群体智能优化算法之海象优化算法(WO)

文章目录 一、灵感来源二、算法的初始化三、GTO的数学模型Phase1&#xff1a;危险信号和安全信号Phase2&#xff1a;迁移&#xff08;探索&#xff09;Phase3&#xff1a;繁殖&#xff08;开发&#xff09; 四、流程图五、伪代码六、算法复杂度七、WO搜索示意图八、实验分析和结…

jbase打印导出实现

上一篇实现了虚拟M层&#xff0c;这篇基于虚拟M实现打印导出。 首先对接打印层 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Xml;namesp…

探索NLP中的核心架构:编码器与解码器的区别

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

高校教师资格证备考

高等教育制度 关于人的全面发展和个体发展的关系&#xff0c;说法正确的是&#xff08;ABC&#xff09;。 A.个体发展是在全面发展基础上的选择性发展 B.全面发展是个体发展的前提和基础 C.个体发展又是全面发展的动力 D.个体发展是全面发展的前提和基础

什么是缓存雪崩、击穿、穿透?

背景 数据一般是存储于数据库中&#xff0c;数据库中的数据都是存在磁盘上的&#xff0c;磁盘读写的速度相较于内存或者CPU中的寄存器来说是非常慢的了。 如果用户的请求都直接访问数据库的话&#xff0c;请求数量一上来&#xff0c;数据库很容易就崩溃了&#xff0c;所以为了…

html网页设计 01基础标签

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body> <!-- 标题标签 h1最大 --><h1>最大标签</h1><h2>二级标签</h2><h3>三级标签</h3><…

SpringBoot 统一功能处理

一、用户登录拦截器 1、拦截器实现步骤 步骤1&#xff1a;自定义拦截器 // 自定义拦截器 Component public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object h…

信号的机制——信号的发送与处理

对于硬件触发的&#xff0c;无论是中断&#xff0c;还是信号&#xff0c;肯定是先到内核的&#xff0c;然后内核对于中断和信号处理方式不同。一个是完全在内核里面处理完毕&#xff0c;一个是将信号放在对应的进程 task_struct 里信号相关的数据结构里面&#xff0c;然后等待进…

紫色调城市和奔跑人物剪影背景工会工作总结汇报PPT模板

这是一套紫色调城市和奔跑人物剪影背景工会工作总结汇报PPT模板&#xff0c;共33页&#xff1b; PPT模板封面&#xff0c;使用了蓝天白云、城市剪影、奔跑人物剪影背景图片。中间填写工会工作总结汇报PPT标题。界面色彩丰富充满活力。 PowerPoint模板内容页&#xff0c;由31张…

gittee启动器

前言 很多小伙伴反馈不是使用gitee&#xff0c;不会寻找好的项目&#xff0c;在拿到一个项目不知道从哪里入手。 鼠鼠我呀就是宠粉&#xff0c;中嘞&#xff0c;老乡。整&#xff01;&#xff01;&#xff01; git的基本指令 在使用gitee的时候呢&#xff0c;我们只需要记住…

C++加持让python程序插上翅膀——利用pybind11进行c++和python联合编程示例

目录 0、前言1、安装 pybind11库c侧python侧 2、C引入bybind11vs增加相关依赖及设置cpp中添加头文件及导出模块cpp中添加numpy相关数据结构的接收和返回编译生成dll后改成导出模块同名文件的.pyd 3、python调用c4、C引入bybind11 0、前言 在当今的计算机视觉和机器学习领域&am…

【入门篇】1.4 redis 客户端 之 Lettuce 详解

文章目录 1. 简介1. 什么是Lettuce2. Lettuce与其他Redis客户端的比较3. Lettuce的特性和优势 2. 安装和配置3. 连接池配置1. 什么是连接池2. Lettuce的连接池使用与配置3. 连接池配置项 4. 基本操作1. 如何创建Lettuce连接2. Lettuce的基本操作如增删改查3. Lettuce的事务操作…

vue --version无法显示,只弹出vs窗口

参考连接&#xff1a; nodejs环境配置&#xff08;解压包&#xff09;安装教程_nodejs解压版安装及环境配置_tubond的博客-CSDN博客 原因&#xff1a;环境没搞好&#xff0c;没有设置全局文件夹&#xff0c;node默认放在C盘了&#xff0c;C盘有权限。因为npm -i vue/cli创建…