一文了解https为什么是安全的
目录
- 前言
- 一、https和http
- 二、http为什么不安全?
- 2.1 http的工作原理
- 2.2 http的明文传输
- 三、https
- 3.1 加密
- 3.2 身份验证
- 四、总结
前言
目前绝大多数网站都已经切换到了https,切换的原因很简单,因为它更安全,https未来会完全取代http,本文从https与http的简介了了解http为什么不安全以及https为什么安全。
一、https和http
HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是Web上数据交换的基础。HTTP是一个无状态的协议,即服务器不会在两个请求之间保留任何数据。它是建立在TCP/IP协议之上的。
HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,通过在HTTP和TCP之间加入SSL/TLS协议来加密数据传输。HTTPS的加密机制可以确保数据在传输过程中不被窃取或篡改,因此更适合用于传输敏感信息,如个人信息、银行信息等。
总的来说,HTTP是一种用于传输超文本的协议,而HTTPS是对HTTP的加密和安全扩展。在网站安全性要求较高的情况下,通常会采用HTTPS协议来保护数据传输的安全。
二、http为什么不安全?
要了解http为什么不安全,首先要明白http的基础工作原理。
2.1 http的工作原理
在手机或电脑进行http请求的时候,实际上是浏览器或其他应用程序将一个http的请求报文发送到了服务器。

服务器收到这个请求报文之后,去处理,处理之后,返回一个响应报文。

但是这个请求是怎么到达对方服务器的呢?
在实际的网络中,我们的消息会经过很多的中间节点,比如我们的路由器、小区的网关等等,这些节点会以接力的形式帮我们一步步转发消息,一步步的让消息到达目标服务器。

最终服务器才接收到这个消息并进行处理。
那么中间的转发者又是怎么转发这些消息的呢?
如果它能够原封不动的发送到下一节点,那么一切都很顺利,但是如果它篡改了我们发送的消息呢,那不就坏事了!
其实不只是篡改,单纯的窃听也很有风险,比如我们在发送自己的账号密码到服务器上时,路上的每一个节点都能看到,这是不是很危险?而且不只是中间节点,网络中的其他节点也是可以对消息进行监听的。
所以网络从本质上就不可避免地会让别人看到我们发送和接受的信息。这个是http不安全的原因之一。但是总不能因为这个把整个网络结构改了吧?
这就涉及到http不安全的另一个原因:明文传输
2.2 http的明文传输
所谓明文传输就是将消息内容不做任何修饰加工就直接传输。与之对应的一个概念就是加密。
三、https
3.1 加密
https就是通过加密来让消息变得安全。https把http消息进行加密之后再传送,这样别人就算拿到之后也看不懂,这样就做到了安全!
具体来说,https是通过对称加密、非对称加密、哈希算法共同作用来在性能和安全性上达到一个平衡。
加密是会影响传输性能的,尤其是非对称加密,因为它的算法比较复杂。
3.2 身份验证
光是加密就确保安全了吗?https不仅对消息进行了加密,而且对通信对象进行了身份验证。
如果我要访问www.xxx.com,需要知道我的访问对象确定是目标xxx.com而不是被拦截了网络请求然后被转移到一个其他的地址,这种拦截在http里是可以做到的,你有没有在浏览器中输入想要的网站,但是页面加载过程中突然被转移到了一个其他冒红点的其他网站,这就是被拦截到其他地址去了。

但是https引入了证书机制,通过证书链可以对访问对象进行身份验证,能够保证你所访问的对象一定是你认为的那个对象。


不然浏览器就会警告提醒,而在代码开发中,会报异常。

那么直接在http上实现加密、证书机制不就得了嘛?为什么还要引出一个新的https呢?毕竟一个新的东西涉及到兼容性、大众接受度、换代周期等等。
事实上,https也的确是这么做的,
https并不是一种新的协议,它使用了一种TLS(Transport Layer Security)传输层安全性协议,这个安全提提供了数据加密的支持,让http消息运行在这个安全层上就达到了安全,而运行在这个安全层上面的http,就叫做https,htttp Security。
四、总结
看完上面内容,相信会对https和http有一个较深的理解了,但是加密过程中的对称加密、非对称加密、哈希算法,以及证书机制在这里并未深入讲到,不妨看这篇文章:彻底搞懂HTTPS的加密原理
相关文章:
一文了解https为什么是安全的
目录 前言一、https和http二、http为什么不安全?2.1 http的工作原理2.2 http的明文传输 三、https3.1 加密3.2 身份验证 四、总结 前言 目前绝大多数网站都已经切换到了https,切换的原因很简单,因为它更安全,https未来会完全取代…...
[‘column‘]和[:,‘column‘]的区别
之前,关于numpy和pandas的操作一直不熟悉,对于获取数据中的行,列一直混淆。 df[column] df[column]是 Pandas DataFrame 切片的常用语法,用于选择名为 column 的单个列。它返回一个 Pandas Series 对象。 df.loc[:,column] df[:,…...
icloud如何高效利用
iCloud是Apple提供的一项云存储和云计算服务,能够帮助用户在不同的Apple设备之间同步和共享数据。要高效利用iCloud,可以参考以下几个方面: 自动备份:确保所有重要的Apple设备都开启了iCloud备份功能,这样可以自动将设…...
k8s二进制安装与部署
目录 一、实验目的 二、实验环境 三、实验步骤 3.1 操作系统初始化配置 3.2 部署 docker引擎 3.3 部署 etcd 集群 3.3.1 在 master01 节点上操作 3.3.2 在 node01 节点上操作 3.3.3 在 node02 节点上操作 3.4 部署 Master 组件 3.4.1 在 mast…...
驱动编译报error: negative width in bit-field ‘<anonymous>’错误
错误如下图所示: 代码如下: 问题点:module_param的其他用户的权限参数上。 在Linux中,文件权限由读(r)、写(w)、执行(x)权限组成,分别对应数值4、2、1。 第一位0是占位符,在这里没有意义,因为…...
Go语言的命名规范是怎样的?
文章目录 Go语言的命名规范详解一、标识符命名规范示例代码 二、包名命名规范示例代码 三、变量命名规范示例代码 四、常量命名规范示例代码 五、函数命名规范示例代码 总结 Go语言的命名规范详解 在Go语言中,代码的命名规范对于项目的可读性、可维护性和可扩展性至…...
Vue3骨架屏(Skeleton)
效果如下图:在线预览 APIs 参数说明类型默认值必传animated是否展示动画效果booleantruefalsebutton是否使用按钮占位图boolean | SkeletonButtonPropsfalsefalseavatar是否显示头像占位图boolean | SkeletonAvatarPropsfalsefalseinput是否使用输入框占位图boolea…...
【文末附gpt升级方案】亚马逊与Hugging Face合作:定制芯片低成本运行AI模型的创新探索
亚马逊与Hugging Face合作:定制芯片低成本运行AI模型的创新探索 摘要 本文探讨了亚马逊云部门与人工智能初创公司Hugging Face的合作,旨在通过定制计算芯片Inferentia2在亚马逊网络服务(AWS)上更低成本地运行数千个AI模型。文章首…...
二叉树的链式实现
目录 一、二叉树的基础操作 二、二叉树代码图解 2.1 遍历 2.2 求大小 2.3 创建与销毁 2.4 与队列结合解决问题 三、二叉树C语言源码汇总 二叉树的代码实现运用了函数递归的思想,了解函数递归的知识请见博主的另一篇博客: http://t.csdnimg.cn/Po…...
STM32中断编程入门
文章目录 一、 理论部分1.中断系统2.中断执行流程3.NVIC的基本结构4.EXTI介绍5.AFIO复用IO口 二、实验目的:学习stm32中断原理和开发编程方法。使用标准完成以下任务:(一)实验一 开关控制LED的亮灭1.代码部分2.运行结果 ÿ…...
《我的阿勒泰》读后感
暂没时间写,记录在此,防止忘记,后面补上!!! 【经典语录】 01、如果天气好的话,阳光广阔地照耀着世界,暖洋洋又懒洋洋。这样的阳光下,似乎脚下的每一株草都和我一样,也把身子完全舒展开了。 02、…...
Android.mk简单介绍、规则与基本格式
文章目录 Android.mk与makefile区别Android.mk规则Android.mk基本格式 Android.mk与makefile区别 Android.mk 和 Makefile 都是用于构建代码项目的构建脚本文件,但是它们在特定上下文中有一些区别: Android.mk: Android.mk 是用于构建 Android 应用或库…...
【MySQL精通之路】InnoDB(3)-MVCC多版本管理
InnoDB是一个多版本(MVCC)的存储引擎。 它保留有关更改行的旧版本的信息,以支持事务性功能,如并发和回滚。 这些信息存储在称为回滚段的数据结构中的Undo表空间中。 参见“Undo表空间”。 InnoDB使用回滚段(rollback…...
uniapp 对接 微信App/支付宝App 支付
相关文档:uni.requestPayment(OBJECT) | uni-app官网 示例代码: import qs from qsasync aliPay(){const { provider } await uni.getProvider({ service:payment })if(provider.includes(alipay)){uni.request({url:后端接口地址,data:{ //传参 },suc…...
cmake配置opencv与boost库
Cmake配置外部依赖库(以Opencv和Boost为例) Cmake对于外部依赖库,需要知道外部库的头文件路径,库文件路径以及库的名字。比如,对于要使用的Boost库,需要知道头文件的位置,库目录的位置以及库依…...
【Kotlin 一】Kotlin入门知识简介、变量声明、数字类型
1. Kotlin简介 Kotlin旨在解决 Java语言在编码效率和代码质量上存在的问题,并且与Java语言完全兼容。Kotlin通过简化语法、提供更强大的函数以及减少样本代码的编写,使开发者能够更高效地编写代码。Kotlin适用于Android、Web后端开发等多种场景 2.Kotl…...
Java 微信小程序登录(openId方式)
1 需求 在开发微信小程序项目时,登录采用的是openId方式,这是一种用户无感的登录方式,用户点开微信小程序时,去调用后端的登录接口。 核心代码 Slf4j Component public class WeChatUtil {private static final String …...
为何程序员35岁就开始被嫌弃了?程序员该如何避免中年危机?
文章目录 一、为何程序员35岁就开始被嫌弃了?1、技术更新迅速2、职业发展瓶颈3、成本考虑4、年龄歧视5、市场供需变化6、个人因素 二、程序员该如何避免中年危机?1、持续学习与技能更新2、拓展技术广度与深度3、提升软技能4、关注行业趋势与市场变化5、建…...
【2024软考】史上最全!软考刷题+解析大合集(9万字全手工打,货真价实)
计算机基础知识 1.中断向量表用来保存各个中断源的中断服务程序的入口地址。当外设发出中断请求信号(INTR)以后,由中断控制器(INTC)确定其中断号,并根据中断号查找中断向量表来取得其中断服务程序的入口地…...
【Spring Security + OAuth2】授权
Spring Security OAuth2 第一章 Spring Security 快速入门 第二章 Spring Security 自定义配置 第三章 Spring Security 前后端分离配置 第四章 Spring Security 身份认证 第五章 Spring Security 授权 第六章 OAuth2 文章目录 Spring Security OAuth21、基于request的授权1…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
