Java Web 实战 20 - HTTP PK HTTPS ? HTTPS 大获全胜 ?

HTTP VS HTTPS

  • 一 . HTTPS
    • 1.1 臭名昭著的运营商劫持
    • 1.2 加密是什么 ?
    • 1.3 HTTPS 的加密过程
      • 对称加密
      • 非对称加密
      • 引入 "证书" 机制
    • 1.4 HTTP VS HTTPS

Hello , 大家好 , 好久没有更新 JavaWeb 模块的内容了 .
博主这篇文章主要给大家讲解一下 HTTPS 以及与 HTTP 的区别
那接下来的知识点无疑都是面试重灾区 , 举几个常见例子
HTTP / HTTPS : HTTPS 加密的过程
Servlet : Cookie 和 Session 的区别
Linux : 常见的 Linux 指令
JVM : JVM 内存区域划分、垃圾回收机制、双亲委派模型
那希望大家跟紧步伐 , 站稳脚跟 !
在这里插入图片描述
大家也可以订阅 JavaWeb 专栏 , 点击即可跳转
准备好 , 我们要开始发车了 !

一 . HTTPS

HTTPS 和 HTTP 相比 , 只是多了一个 “加密层”
HTTP 传输数据都是明文传输的 , 很容易被别人获取或篡改

1.1 臭名昭著的运营商劫持

这种不属于该页面的弹窗广告 , 就是运营商劫持

或者像这样 , 要下载天天动听 , 结果自动下载了 QQ 浏览器 , 也是运营商劫持
image.png
这种运营商劫持在以前是非常猖狂的
由于我们通过网络传输的任何的数据包都会经过运营商的网络设备 (路由器 , 交换机等) , 那么运营商的网络设备就可以解析出你传输的数据内容 , 然后进行篡改.
正常情况下点击 “下载按钮” , 其实就是在给服务器发送了一个 HTTP 请求 , 获取到的 HTTP 响应其实就包含了该 APP 的下载链接 . 运营商劫持之后 , 就发现这个请求是要下载天天动听 , 那么就自动的把交给用户的响应给篡改成 “QQ浏览器” 的下载地址了 .
image.png
互联网上其实是非常不安全的 , 你觉得你没遇到过这些事 , 但其实你可能已经中招了

  1. 你的电脑这边没啥值钱的东西 , 没人盯着你
  2. 你的电脑其实已经中招 , 你不知道
  3. 你的电脑的杀毒软件 / 防火墙把你保护的很好

之后买了云服务器之后 , 感受就更加明显了
image.png

那既然运营商能够进行劫持 , 黑客也肯定能进行劫持咱们的数据
比如 , 黑客黑入了某个路由器 , 这个时候就可能获取到所有经过路由器的网络数据报

  1. 运营商路由器可能会受到攻击
  2. 公共场合的 wifi 也是活靶子

此时如果你继续在网络上按照明文传输信息 , 你的账号密码就要被窃取了
如何保证数据不被窃取呢 ?
无法阻止黑客入侵路由器 , 但是可以想办法对数据进行加密 , 即使被窃取 , 他也不知道是啥意思

1.2 加密是什么 ?

例子来源于这篇文章 : https://mp.weixin.qq.com/s/OkDstEG5Fu9QhNU65tgBeQ

小学上课的时候,都传过小纸条吧?传纸条的时候每个拿到纸条的同学都会忍不住看一眼,毫无隐私可言
假设班花想对我表白,又不想在传的过程中让别人发现她的情意绵绵。
就会在课间十分钟里告诉我,“每个字母向左移动一位,就是我想对你说的话”。
然后在上课的时候,递出纸条,上面写了 eb tib cj。每个帮助传递纸条的同学看了之后,都暗骂“谜语人,你给我滚出哥谭镇”。
嘿嘿,你们不懂,我懂。
我拿到纸条后,将每个字母向左移动一位,得到 da sha bi。
什么话,这是什么话。
坏女人想要毁我向道之心?我果断拒绝了她的表白。

现在回忆起来,感动之余,会发现,像这种,将一段大家看得懂的信息(明文)转换为另一段大家看不懂的信息(密文),其实就是加密
像这种“左移”的加密方法,其实就是所谓的秘钥(密钥)
而这种加密和解密用的都是同一个秘钥的加密形式,就叫对称加密。

对称加密
那既然有对称加密,那就有非对称加密
不同点在于,非对称加密,加密和解密用到的不是同一个秘钥,而是两个不一样的秘钥,分别是公钥和私钥

非对称加密

密钥是用来 “加密” 和 “解密” 的关键数据
明文通过密钥变成密文这个过程就是"加密" , 密文通过密钥变成明文这个过程就是"解密"
如果加密和解密过程中 , 使用的密钥是同一个就叫做 : “对称加密”
如果加密和解密过程中 , 使用的是不同的密钥 , 就叫做 : “非对称加密”

1.3 HTTPS 的加密过程

对称加密

加密中最典型的办法 , 就是对称加密
加密和解密使用的是同一个密钥

image.png

非对称加密

如果加密和解密过程中 , 使用的是不同的密钥 , 就叫做 : “非对称加密”
非对称加密用来加密解密的密钥是一对有关联的整数 (通过数学上面的一些方法来生成的)

拿两个很大的素数 , 很容易得到乘积 , 但是知道乘积 , 没法还原回这两个素数

把这一对密钥 , 其中一个公布出来(公钥) , 另一个自己藏着(私钥)
就可以使用公钥来加密 , 私钥来解密
或者也可以私钥来加密 , 公钥来解密

可以这样理解 : 小区楼下有邮箱
每一户有自己的邮箱 , 有一个钥匙
邮递员手里有一把小锁头 (邮递员有很多个 , 这样的锁头也有很多 , 但是钥匙都是同一把)
邮递员可以通过这个锁 , 把你的信锁进去 [使用公钥加密]
你就可以拿着钥匙来开锁获取到信了 [使用私钥解密]

1678680981409-5581776e-8c2a-4d85-8419-dcf36c601701.png
既然非对称加密这么香 , 为啥还要用对称加密呢 ?
非对称加密的加密和解密的开销 , 都是非常大的 , 就不如对称加密轻量
为了让安全和效率同时都具备 , 那我们就二者结合使用

但是上述的过程并非是无懈可击 , 黑客仍然有办法解决这个问题 , 叫做 : 中间人攻击

引入 “证书” 机制

先给大家讲解一下 , 什么是 “中间人攻击”
举个栗子 : 我们看电视剧经常会看到黑帮大佬们进行交易
易烊千玺和王源要进行交易 , 但是他们两个彼此都不认识 , 这时候王俊凯就可以浑水摸鱼
跟易烊千玺进行交易的时候 , 王俊凯假装是王源进行交易
跟王源进行交易的时候 , 王俊凯就假装自己是易烊千玺
这样 , 王俊凯就是一个中间人的操作 , 将易烊千玺和王源一网打尽
无标题.png
那如何解决中间人攻击的问题呢 ?
我们就需要让客户端有能力鉴别传过来的公钥到底是不是服务器传过来的公钥 , 有没有被动过手脚
HTTPS 就引入了一个证书机制
无标题.png
那 Fiddler 是如何实现抓包 HTTPS 呢?
Fiddler 其实就是在进行中间人攻击
首次勾选 Fiddler 的 Https , 提示是否要安装一个 xxxx 证书
这个是 Fiddler 为了实现中间人攻击 , 自己生成的证书
得安装了这个证书 , 浏览器才会信任 Fiddler , 浏览器才不会弹框

上述的这些过程 , 不是 HTTPS 独有的 , 这个过程是 SSL/TLS 的加密流程
HTTPS 就是 HTTP + SSL
其他的协议也可能使用 SSL (比如 SSH 协议)

1.4 HTTP VS HTTPS

HTTPS 是基于 HTTP 的 , 他更加安全了 , 主要在以下几点

  1. 安全性
    a. HTTP 是明文传输的
    b. HTTPS 通过 SSL/TLS 进行数据加密
  2. 加密性 : HTTPS 会在数据发送和接收之前会进行加密
  3. 证书 : HTTPS 网站需要获得 SSL/TLS 证书
  4. 端口号 : HTTP 端口号是 80 , HTTPS 端口号是 443
  5. 搜索引擎优化 : 谷歌浏览器就会将 HTTPS 的网站排列在更靠前的位置

到此为止 , 这篇文章就讲解完毕了
我们主要讲解了以下几点

  1. 什么是运营商劫持 ?
  2. HTTPS 是怎样加密的
    a. 对称加密
    b. 非对称加密
    c. 证书
  3. HTTPS 与 HTTP 的区别

如果你对 HTTPS 有一定的了解了 , 就请给我一键三连~
在这里插入图片描述

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

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

相关文章

Spring IOC/DI和MVC及若依对应介绍

文章目录 一、Spring IOC、DI注解1.介绍2.使用 二、Spring MVC注解1.介绍2.使用 一、Spring IOC、DI注解 1.介绍 什么是Spring IOC/DI? IOC(Inversion of Control:控制反转)是面向对象编程中的一种设计原则。其中最常见的方式叫做依赖注入(…

Backtrader绘图cerebro.plot报错问题的处理

Backtrader绘图cerebro.plot报错问题的处理 1.问题描述 在jupyter 中使用BackTrader ,使用绘图功能时: cerebro.plot() 提示错误:ValueError: Axis limits cannot be NaN or Inf 由于backtrader 要求有7列数据,最后一列openint…

(数据结构)算法的时间复杂度

注意语句频度和时间复杂度的区别,语句频度是指语句执行的次数,不可以像时间复杂度一样近似次数和省略常数项

图书管理系统(图文详解,附源码)

前言:本文旨在用面向对象的思想编程实现图书管理系统,功能包括增删查找,完整源码放在文末,大家有需自取 目录 一.整体框架 二.书籍和书架 书籍(Book) 书架(BookRack) 三.对书籍的相关操作 操作接口(IOperation) 新增图书(A…

支付、结算、对账流程

1、支付过程概览 2、微信支付流程 以微信支付为例,用户使用北京银行,商户收款银行为工行银行,列出机构名 用户在商户处选购商品或服务,选择使用微信支付进行付款。用户打开微信支付,输入支付密码或进行指纹识别等身份验证。微信支付系统将支付请求发送给北京银行。北京银行…

校园服装定制服务预约小程序的效果如何

对校园服装定制商家而言,如今线下流量稀缺,同行多且竞争激烈,同时这一行面对的消费者非大众,因此各品牌间都在通过各种方式进行同城或多地的客户拓展,但线下方式无疑是比较低效的。线上是一个不错的选择,不…

用cmd看星球大战大电影,c++版本全集星球大战,超长多细节

用cmd看星球大战 最近发现了一个有趣的指令。 是不是感觉很insteresting呢 教程 进入控制面板,点击系统与安全 然后,进入以后,点击启用或关闭 Windows 功能 启用Telnet Client并点击确定 用快捷键winr打开我们的cmd 输入指令 telnet towe…

腾讯云CVM服务器标准型/高IO/计算/大数据使用场景及选择说明

腾讯云CVM服务器多种机型使用场景说明,如标准型、内存型、高 IO 型、计算型、大数据型、异构型和批量型,腾讯云百科txybk.com分享不同CVM实例规格配置适合使用场景说明: 腾讯云CVM云服务器 标准型:适合中小型 Web 应用、中小型数据…

图解系列--认证

单向散列函数 1.什么是单向散列函数 单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。 在指定的散列函数处理下,无论输…

Spring Boot中实现支付宝、微信和银联支付的功能

Spring Boot中实现支付宝、微信和银联支付的功能 在Spring Boot中实现支付宝、微信和银联支付的功能,通常需要使用它们各自的SDK(Software Development Kit)。以下是一个简单的示例代码,演示了如何在Spring Boot项目中集成支付宝…

Flutter笔记:拖拽手势

Flutter笔记 拖拽手势 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134485123 目 录 1. 概述2. 垂直拖…