一文了解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…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...

uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...