详解 HTTP 中间人攻击

  • 什么是中间人攻击?

攻击者将自己插入通信过程中,以窃取,篡改数据。通信的两端不知道中间人的存在,他们以为在与对方直接通信,实际上他们的通信已经被监听或干扰。WIFI 路由器被破解之后就能进行中间人攻击。

  • 中间人攻击为什么能实现

有 3 个原因

  1. HTTP 协议以明文传输数据,中间人拦截数据包之后能轻易地还原 HTTP 包文的内容,这使得中间人能监听 HTTP 通信的数据。.

  1. 使用 HTTP 协议的请求和响应方不验证对方的身份。因此请求方无法确保发起的请求由预计的响应方接受,它收到的数据也不能确保来自预计的响应方;从响应方的角度来看,它接受的请求不一定来自预计的请求方,它返回的数据也不一定被预计的请求方接受。

cookie 和 token 的验证发生在业务层,如果 HTTP 协议层不校验身份,那么数据在传输过程中,网络代理或中间服务器仍然可以携带正确的 cookie 和 token 等业务层的验证数据,然后篡改数据再次发出,由于有正确的验证数据,那么业务层便无妨识别真伪。

  1. 无法验证数据的完整性。因此数据在传输过程中被篡改了,通信双方都无法知晓。

  • 如何防范中间人攻击
  1. 重视浏览器弹出的警告。
  2. 在公共网络环境下,不访问没有使用 HTTPS 协议的网站。
  3. 登录网站时候注意网站是否使用的是 HTTPS 协议。

  • 为什么使用 HTTPS 协议能减少中间人攻击

HTTPS 在 HTTP 的基础上加了一层 SSL/TLS,这使得 HTTP 通信不以明文传输,通信双方能验证数据的完整性,通信双方能验证对方的身份。SSL 是 TLS 的前身,后者更安全。SSL 是一个比 TLS 更通用的术语。

  • HTTPS 的工作流程

TCP 三次握手 -> SSL/TLS 三次握手 -> 会话,可以看出 HTTPS 在 HTTP 建立连接的基础上加了一层 SSL/TLS 三次握手,下面重点介绍它的工作流程。

SSL/TLS 第一次握手:客户端将自己支持的 SSL/TLS 版本、加密算法、压缩方式等发送到服务端,这些数据用明文传输。

SSL/TLS 第二次握手:服务端将数字证书、证书链等返回客户端,这些数据用明文传输。

SSL/TLS 第三次握手:客户端使用证书颁发机构的公钥验证数字证书是否有效,无效则断开与服务端的连接,有效则拿到服务器公钥,用伪随机数生成会话密钥,客户端使用服务器公钥通过非对称加密算法加密会话密钥,将结果传给服务器,服务器接受到加密后的会话密钥之后,用私钥将其解密。

会话:SSL/TLS 三次握手结束之后,客户端和服务端都拥有了会话密钥。服务端响应请求时使用对称加密算法将报文加密,客户端接受到响应后使用会话密钥解密报文。

  • 名词介绍
  1. 数字证书

服务器向证书颁发机构(CA)申请证书,CA 使用它的私钥基于证书的内容生成数字证书,返回给服务器。数字证书中包含数字签名、服务器的公钥、域名、证书的有效期等。

  1. 数字签名

数字签名包含在数字证书中,它由 CA 的私钥基于服务器提交的证书内容生成,在 SSL/TLS 第二次握手时服务器将数字证书发送到客户端,客户端根据 CA 的公钥来验证证书的数字签名是否合法

  1. 证书颁发机构私钥,公钥

证书颁发机构私钥由证书颁发机构自己保存,公钥由客户端保存。私钥用于生成数字证书,公钥用于验证数字签名是否有效.

  1. 服务器私钥,公钥

服务器私钥由服务器自己保存,公钥包含在数字证书中,在 SSL/TLS 第二次握手它被返回给客户端。公钥用于加密会话密钥,私钥用于解密服务器接收到的会话密钥。

  1. 非对称加密

加密和解密使用不同的密钥

  1. 对称加密

加密和解密使用相同的密钥

  1. 会话密钥

在会话阶段,服务器用它加密返回的报文,客户端用它解密接收到的报文。

  1. 证书链

数字证书不是由一家机构颁发的,而是设立了一家根证书机构,又设立了若干层中间证书机构,由上层证书机构去颁发验证下层证书机构的证书。证书链就是从根证书,然后经过的若干中间证书,最后到服务器证书这一条链路。

  • 为什么 HTTPS 并非绝对安全
  1. 会话密钥泄漏风险:在会话阶段服务端和客户端使用会话密钥加密和解密报文,如果会话密钥泄露,则攻击者能用它解密报文。

  1. 服务端不验证客户端的身份:客户端将会话密钥发送给服务端,但是服务端不验证客户端的身份,在 SSL/TLS 握手过程中只是客户端验证服务端的身份。

  1. 证书链中的任意节点被污染:证书链是用于验证服务器身份的关键组成部分。如果证书链中的任何一个证书受到污染或者私钥泄露,攻击者可能会冒充合法的服务器进行中间人攻击,这会损害通信的机密性和完整性。

  1. 客户端证书链中任何一个节点公钥被污染替换 :类似于服务器证书链,客户端证书链中的污染或替换也可能导致安全问题。这通常涉及到客户端的身份验证,如果恶意方能够替换客户端证书链中的公钥,他们可能会冒充合法客户端与服务器通信。

  1. 没有妥善处理 HTTP 重定向到 HTTPS:如果一个网站接受 HTTP 的请求,然后重定向到 HTTPS,用户可能在开始重定向前,通过没有加密的方式与服务器通信,比如,用户输入 http://foo.com 或者仅是输入 foo.com。这样为中间人攻击创造了机会。可以利用重定向将用户引导至恶意站点,而不是原始站的安全版本。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

50-4 内网信息收集 - 本机信息收集

一、内网信息收集 内网信息收集可以从以下几个方面进行:本机信息收集、域内信息收集、内网资源探测等。通过这些步骤,我们可以全面了解当前主机的角色和所处内网的拓扑结构,从而选择更合适、更精准的渗透方案。 二、本机基础信息收集 在本机基础信息收集阶段,可以执行以下…

EasyExcel数据导入

前言: 我先讲一种网上信息的获取方式把,虽然我感觉和后面的EasyExcel没有什么关系,可能是因为这个项目这个操作很难实现,不过也可以在此记录一下,如果需要再拆出来也行。 看上了网页信息,怎么抓到&#x…

周记-2024第26周-6.25~6.30

现在是周日晚上21:58,我开始做本周总结。 工作 .1 开始接手量产模型的训练,新工作有新的小组长,我还是有些羞怯,不是很好意思频繁找他。要自信一点,大方一点,一个堂堂男子汉,怎么感觉工作中娘…

SpringBoot + mkcert ,解决本地及局域网(内网)HTTPS访问

本文主要解决访问SpringBoot开发的Web程序,本地及内网系统,需要HTTPS证书的问题。 我测试的版本是,其他版本不确定是否也正常,测试过没问题的小伙伴,可以在评论区将测试过的版本号留下,方便他人参考: <spring-boot.version>2.3.12.RELEASE</spring-boot.vers…

朋友问我Java中“::”是什么意思?我汗流浃背了......

目录 一&#xff1a;什么是&#xff1a;&#xff1a;&#xff1f; 二&#xff1a;方法引用的几种类型 1.引用静态方法 2.引用特定对象的实例方法 3.引用特定类型的任意对象的实例方法 4.引用构造方法 三&#xff1a;方法引用的适用场景 四&#xff1a;总结 一&#xff1…

ssh转发功能入门

端口转发概述 端口转发&#xff0c;能够将其他TCP端口的网络数据通过SSH链路转发&#xff0c;并且提供了ssh的加密和解密的服务。 ssh端口转发有如下这些优点&#xff1a; 提供了ssh的加密传输&#xff0c;利于安全能够突破防火墙限制 目前ssh端口转发有如下几种方式&#x…

spring模块(二)SpringBean(2)BeanWrapperImpl

一、介绍 1、简介 BeanWrapper是Spring中一个很重要的接口&#xff0c;Spring在通过配信息创建对象时&#xff0c;第一步首先就是创建一个BeanWrapper。 Spring低级JavaBeans基础设施的中央接口。通常来说并不直接使用BeanWrapper&#xff0c;而是借助BeanFactory或者DataBi…

eFuse基本概念

From&#xff1a;GTP-4o eFuse&#xff08;电子熔丝&#xff09;是一种在集成电路&#xff08;IC&#xff09;设计中常用的可编程熔丝技术。它在芯片中起着至关重要的作用&#xff0c;主要用于配置、调整、修复和安全相关的功能。以下是关于 eFuse 在芯片中的用途和相关技术的…

学习一下宏的##和...

##&#xff1a;如果参数不存在则忽略逗号和参数 ...&#xff1a;可变参数 栗子&#xff1a; #define Debug(fmt, args...) LOG("DEBUG", fmt, ##args) ...: ... 是C和C预处理器中的一个特殊标记&#xff0c;用于表示一个可变数量的参数。在宏定义中&#xff0c;可…

【课程总结】Day13(上):使用YOLO进行目标检测

前言 在上一章《【课程总结】Day11&#xff08;下&#xff09;&#xff1a;YOLO的入门使用》的学习中&#xff0c;我们通过YOLO实现了对图片的分类任务。本章的学习内容&#xff0c;将以目标检测为切入口&#xff0c;了解目标检测流程&#xff0c;包括&#xff1a;数据标准、模…

使用NFS网关功能将HDFS挂载到本地系统

HDFS安装教程 HDFS安装教程http://t.csdnimg.cn/2ziFd 使用NFS网关功能将HDFS挂载到本地系统 简介 HDFS提供了基于NFS&#xff08;Network File System&#xff09;的插件&#xff0c;可以对外提供NFS网关&#xff0c;供其它系统挂载使用。 NFS 网关支持 NFSv3&#xff0c;并…

【操作系统】进程管理——进程的概念、组成和特征(个人笔记)

学习日期&#xff1a;2024.6.29 内容摘要&#xff1a;进程的基本概念和特征、状态和转换 进程的概念 程序与进程 程序&#xff1a;是静态的&#xff0c;是存放在磁盘里的可执行文件&#xff0c;就是一系列的指令集合 进程&#xff08;Process&#xff09;&#xff1a;是动态…

GPT-5:下一代AI如何彻底改变我们的未来

GPT-5 发布前瞻&#xff1a;技术突破与未来展望 随着科技的飞速发展&#xff0c;人工智能领域不断迎来新的突破。根据最新消息&#xff0c;OpenAI 的首席技术官米拉穆拉蒂在一次采访中确认&#xff0c;GPT-5 将在一年半后发布&#xff0c;并描述了其从 GPT-4 到 GPT-5 的飞跃如…

Linux随记(十)

一、升级harbor v2.6.4 --> harbor-offline-installer-v2.11.0-rc3 --> v2.9.4 – 随记 漏洞信息&#xff1a; CVE-2023-20902timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below, Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an…

js自定义内容生成二维码,qrcodejs的使用

qrcodejs qrcodejs是基于原生js的文本转换成二维码的库&#xff0c;轻量且使用方法简单&#xff0c;它的实现原理是通过canvas将重新编码的内容绘制在页面元素上&#xff0c; 使用qrcodejs时可以选择引入它的cdn或者使用npm下载 <script type"text/javascript" …

Linux的IO易错点总结

本文主要记录IO的一些易错操作。 阻塞IO和非阻塞IO&#xff0c;一般都是针对数据读取的&#xff0c;因为write是主动行为&#xff0c;不存在阻塞这一说。 非阻塞式IO&#xff0c;一般都要配合while轮询来读取数据。 IO多路复用 当只检测一路IO的时候&#xff0c;和普通IO的作…

软考满分范文“论模型驱动架构设计方法及其应用”,软考高级,系统架构设计师

论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型独立于实现技术,以标准化的方式储存,利用…

linux unzip指令

在Linux中&#xff0c;unzip 命令通常用于解压 .zip 文件。默认情况下&#xff0c;unzip 命令会输出解压过程中的一些信息&#xff0c;但不会生成一个完整的报告。但是&#xff0c;你可以通过重定向输出和结合其他命令来生成一个更详细的报告。 以下是一些方法来使用 unzip 命…

鸿蒙开发Ability Kit(程序框架服务):【向用户申请授权】

向用户申请授权 当应用需要访问用户的隐私信息或使用系统能力时&#xff0c;例如获取位置信息、访问日历、使用相机拍摄照片或录制视频等&#xff0c;应该向用户请求授权&#xff0c;这部分权限是user_grant权限。 当应用申请user_grant权限时&#xff0c;需要完成以下步骤&a…

[AIGC] 深入理解 Crontab:定时任务的艺术

在 Unix 或者 Linux 环境下&#xff0c;有一种被广泛使用的工具可以帮助我们自动执行定时任务&#xff0c;那就是 crontab。本篇文章将带你详细了解 crontab 的相关知识。 文章目录 1. 什么是 Crontab2. Crontab 的结构3. 如何使用 Crontab4. 注意事项 相关疑问1. crontab的系统…