IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP劫持 -> 正文阅读

[网络协议]HTTP劫持

一、现象

运营商、黑客、浏览器厂商、手机厂商,通过某些方式篡改了用户正常访问的网页,插入广告或者其他一些杂七杂八的东西。

二、运营商劫持种类:

网络劫持最主要的就是运营商层面的劫持。

运营商劫持主要分两种:DNS劫持和HTTP劫持

三、DNS?劫持

DNS(Domain Name System)域名解析协议

一般而言,用户上网的DNS服务器都是运营商分配的,所以在这个节点上,运营商可以为所欲为。

例如,访问健康,正常DNS应该返回腾讯的ip,而DNS劫持后,会返回一个运营商的中间服务器ip,访问该服务器会一致性的返回302,让用户浏览器跳转到预处理好的带广告的网页,在该网页中再通过iframe打开用户原来访问的地址。

正常访问过程:1. 用户输入域名;2.?DNS把域名翻译成IP传给网站;3.网站再把对应IP的网页呈现给用户

在上面第2步,DNS服务器把域名翻译成的IP被攻击者替换,攻击者劫持正确的IP,然后换成攻击者提供的自己做的网站的IP传给网站,网站调出该IP对应的网页,呈现给用户,这时用户看到的就是攻击者的网站了。这也就是DNS劫持的原理。

四、http劫持原理

在用户的浏览器连上被访问的网站服务器,发送了HTTP请求后,

运营商的路由器会首先收到此次HTTP请求,之后运营商路由器的旁路设备标记此TCP连接为HTTP协议,之后可以抢在网站服务器返回数据之前发送HTTP协议的302代码进行下载软件的劫持,浏览器收到302代码后就会跳转到错误的软件下载地址下载软件了,随后网站服务器的真正数据到达后反而会被丢弃。或者,旁路设备在标记此TCP连接为HTTP协议后,直接返回修改后的HTML代码,导致浏览器中被插入了运营商的广告,随后网站服务器的真正数据到达后最终也是被丢弃。

从上述原理中看出,如果需要进行HTTP劫持,首先需要进行标记:如果是HTTP协议,那么进行劫持,否则不进行劫持。

? ? 劫持的手段

  1. 直接返回一个带广告的HTML
  2. 在原html中插入js,再通过js脚本安插广告
  3. 在原来正常网页嵌入iframe

五、HTTP劫持主要步骤

? ? ???

  1. 标识HTTP连接。在TCP连接中,找出应用层采用了HTTP协议的连接,进行标识
  2. 篡改HTTP响应体,可以通过网关来获取数据包进行内容的篡改
  3. 抢先回包,将篡改后的数据包抢先正常站点返回的数据包先到达用户侧,这样后面正常的数据包在到达之后会被直接丢弃

六、防劫持方法

  1. 对于用户来说,最最直接的就是向运营商投诉。
  2. 在html?上加上<meta http-equiv="Cache-Control" content="no-siteapp"><meta http-equiv="Cache-Control" content="no-transform " />?百度官方给的禁止转码声明。
  3. 在开发的网页中加入代码过滤,大概思路就是用JavaScript代码检查所有的外链是否属于白名单。
  4. 最有用的方式,使用HTTPS?。https协议就是http+ssl协议;https?加了SSL协议,会对数据进行加密。(SSL是SecureSocketLayer的缩写,是一种安全传输协议。)

? ? ? ? ? ?https连接过程

  • 客户端发送https请求
  • 服务端接收到https请求之后,生成公钥和私钥
  • 服务端返回公钥
  • 客服端收到公钥,会验证公钥是否有效,如颁发机构或过期时间等,如果发现异常会抛出异常,提示证书存在问题。如果没有问题,会生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密
  • 加密之后,发给服务端
  • 服务端收到经过加密的密钥,然后用私钥进行解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行堆成加密,这样除非知道密钥,否则无法知道传输的内容
  • 服务端将经过加密的内容传给客户端
  • 客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:40:35  更:2022-04-15 00:43:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:34:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码