【HTTP(3)】(状态码,https)

news2024/11/17 10:55:16

【认识状态码】

状态码最重要的目的,就是反馈给浏览器:这次请求是否成功,若失败,则出现失败原因

常见状态码:

200:OK,表示成功

404:Not Found,浏览器访问的资源在服务器上没有找到

403:Forbidden,访问被拒绝(没有权限)

405:Method Not Allowed,方法不支持

500:Internal Server Error服务器内部错误

504:Gateway TimeOut,超时,服务器出问题了,响应没有在规定的时间内返回

302:Found,特殊的状态码,重定向,访问A网站自动跳转到B网站,响应中就会返回302这样的状态码,并且在响应头中添加Location属性(包含了B网站的地址)

总结:

状态码中2开头的,都是成功

4开头的,都是客户端这边出问题

5开头的,都是服务器端这边出问题

【https】

【https概念】

也是一个应用层协议,http协议内容都是按照文本方式明文传输的,这就导致在传输过程中出现一些被篡改的情况,可能会出现「运营商劫持」,一些情况下想下载的内容被偷偷替换为别的内容

如何解决?进行加密

https,在http协议的基础上引入了一个加密层,传输时内容被进行了加密,也是通过密文传输的

【密码的核心概念】

明文:要传输的原始数据

密文:把明文进行加密后得到的一个让别人不能理解的数据

加密:明文—>密文

解密:密文—>明文

密钥:进行加密和解密的重要数据/辅助工具

【对称加密,非对称加密】

两类加密算法

对称加密:无论是加密还是解密,都使用同一个密钥

非对称加密:有一对密钥A和B,使用A加密,就使用B解密,或者使用B加密,就使用A解密

大多时候一对密钥有一个密钥是公开的

公开出来的密钥,称为“公钥”,私藏起来的密钥,称为“私钥”

【https基本工作过程】

首先要注意,https只是在http的基础上引入加密机制,所以除了加密部分其他部分和http一模一样

如果中间的路由器被黑客入侵,此时黑客就可以通过路由器抓包明确地看到传输的数据是什么样子,一旦明确了数据,此时既可以知道数据要干什么,也可以篡改这里的数据

为了解决这样的问题,可以引入对称加密

但客户端和服务器交互过程中,一个服务器对应多个客户端,多个客户端是使用同一个还是不同的密钥?

必须不用,若大家密钥都相同,黑客只需要自己搞一个客户端,就也能知道密钥是什么

按照这样的方式,密钥明文传输给服务器,此时黑客就可能截获到这个密钥,后续的加密形同虚设,因此,通过对称加密,数据就是不安全的

为了让数据安全,可以引入非对称加密

通过非对称加密,对要传输的对称密钥进行加密,需要注意的是,非对称加密存在的目的不是为了取代对称加密,而是“辅助”

业务数据仍然是对称加密传输,而非对称加密只用来传输对称密钥

不取代是因为非对称加密的运算开销大,比较消耗性能,因此只用来加密运算开销小且很关键的对称密钥

【中间人攻击】

上述流程中存在严重缺陷

1.服务器会生成一对公钥私钥pub1和pri1,其中pub1是公开的,pri1自己保存好

2.客户端这边首先给服务器发起一个请求,问服务器公钥是什么,服务器收到了请求,就返回了“公钥是pub1”

3.此时中间的黑客就可以自机生成一对非对称密钥pub2和pri2,然后黑客就会把服务器返回给客户端的响应替换成“公钥是pub2”,变成黑客自己的公钥了

客户端是不清楚当前这个公钥是不是真的,只能选择相信

4.客户端使用pub2针对对称密钥加密,于是就把加密后的数据传输给服务器

5.中间的黑客劫持到上述数据,就可以利用对称密钥的特性,使用自己的pri2针对数据进行解密,得到了对称密钥的内容

随后黑客把拿到的对称密钥内容通过服务器的pub1重新加密,进行伪装,发送给服务器

服务器也不知道这个数据是不是做了手脚,因此服务器就认为和客户端已经把密钥交流完毕了,接下来应该传输数据了

6.接下来双方传输的数据就都能被黑客以对称密钥解密出来

因此,黑客的设备可以在客户端面前假扮服务器,在服务器面前假扮客户端,演技足够好就可以骗过双方,获取到双方传输的业务数据

如何避免中间人攻击?

引入证书机制

产生中间人攻击主要是因为客户端不知道服务器发过来的公钥是不是被伪造的,问题的关键是,能让客户端识别出拿到的公钥是不是正确合理的,不是伪造的公钥

如何证明公钥合理?

引入第三方公证机构

在公证机构这里申请「证书」(是电子的一串数据)

申请的时候就需要提交一些资料(网站域名,备案号等,以及最重要的公钥)

公证机构可以根据这些信息生成一个「证书」

服务器申请到证书后,后续客户端从服务器拿公钥,就不是只拿公钥,而是拿整个证书

此时,客户端就可以凭借证书中的数字签名对证书的合法性进行验证

【客户端验证数字签名流程】

1.客户端把证书中各个字段,再算一次校验和,得到checksum1

2.客户端使用公证机构的公钥,对数字签名进行解密,得到checksum2

3.对比checksum1和checksum2

若相等,视为当前证书各个字段和服务器这边的证书相同,就可以认为这是合法证书

若不相等,意味着证书上的内容被中间的黑客篡改,此时浏览器往往会弹出警告页面,提示用户该网站不安全

当前客户端手里拿着公证机构的公钥,客户端如何确定这个公证机构的公钥是正确的,不是伪造的?

这个东西不是通过网络获取的,而是操作系统内置的,因此不会是伪造的

黑客可不可以篡改数据后,同时更新数字签名,让数字签名解密出来的checksum2,和篡改过的checksum1一致?

理论不可行,黑客篡改数据后,要想重新生成数字签名,就要使用公证机构的私钥来加密,这个私钥不是普通黑客能拿到的

黑客如果自己生成一个私钥也没用,这个时候客户端拿着公证机构的公钥也解密不了(不是一对的密钥)

此时客户端如果解密出错,也可以认为证书有问题

Fiddler等抓包工具为什么能解析https数据

这类抓包工具只有拿到对称密钥,才能对数据解密

换句话说,这种工具就是在进行被允许的中间人攻击

(开启这类抓包工具的https选项时,同意了「信任抓包工具提供的证书」的选项,因此就是允许了)

1.此时客户端已经信任了fiddler证书,客户端手里就拿着了fiddler的公钥,fiddler就相当于客户端认可的公正机构

2.在客户端询问服务器证书的时候,对于服务器返回的证书,fiddler会篡改证书中的数据,把证书中的公钥替换为自己的公钥,并且使用自己的私钥来加密,得到数字签名,并重新生成证书替换服务器的证书,发给客户

3.客户端验证fiddler证书,计算证书各个属性的校验和,得到checksum1,并从数字签名解密,得到checksum2

这个数字签名就是拿着刚才信任的fiddler公钥进行解密了,这就达成了中间人攻击

这里与刚才的黑客攻击最大差别就是客户端验证fiddler证书的环节

因为对fiddler证书进行了信任,这就令客户端在后续把fiddler当成了公证机构,拿着它提供的公钥进行解密,自然也是没问题的

【重点掌握】

在浏览器输入url后,到最终展示出页面为止,这个过程中计算机都做了哪些事情呢?

基本思路:

站在网络原理的角度

a.DNS解析,我们输入的url里面一般都是一个域名,所以需要通过DNS服务器根据域名得到IP地址

b.https,接下来客户端要给服务器发送一个https请求,进入https的握手过程(对称加密,非对称加密,中间人攻击,证书等)

c.http,前面加密的准备工作完成了,接下来就要正式传输数据了,浏览器构造http请求,服务器返回http响应(http都有啥)

d.TCP,http基于TCP实现(TCP三次握手,核心机制等)

e.IP协议,TCP又是基于IP协议的(IP如何管理IP地址的,IP如何进行数据转发的?)

f.数据链路层(以太网知识)

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

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

相关文章

你还在用Java8吗?

Java 11 在企业中,Java的不同版本使用情况随着时间在不断变化。根据最新的数据报告,以下是一些关键点: Java 11 和 Java 17 成为企业中最常用的长期支持(LTS)版本,使用率分别为 48% 和 45%,而 …

rtp协议:rtp固定头部介绍

前言: 大家好,今天开始给大家分享rtp协议的相关详细介绍,关于rtsp的介绍,大家可以暂时看官方的文档: https://datatracker.ietf.org/doc/html/rfc2326 本文主要是介绍rtp协议,也就是在开发rtsp过程进行传输…

微积分-反函数6.3(对数函数)

如果 b > 0 b > 0 b>0 且 b ≠ 1 b \neq 1 b1,则指数函数 f ( x ) b x f(x) b^x f(x)bx 不是递增就是递减,因此它是通过水平线测试的单调函数。所以它具有反函数 f − 1 f^{-1} f−1,称为以 b b b 为底的对数函数&#xff…

【数据结构】链表(2)

【LinkedList的模拟实现】 这是java中的一个集合类,可以当成链表来使用,作为链表时,它视为包含三个域,是一个双向链表 【构建LinkedList框架】 public class MyLinkedList {static class ListNode{public int val;public ListNo…

Qt/C++如何选择使用哪一种地图内核/不同地图的优缺点/百度高德腾讯地图/天地图/谷歌地图

一、前言说明 最近花了大半年时间,专门研究这个地图组件,几乎把各种地图的官网的手册翻了个遍,亲自写代码验证了一遍,各种API函数接口和功能全部实战一遍,然后从中提取共性,做出了基类,以及通用…

使用 Light Chaser 进行大屏数据可视化

引言 在当今数据驱动的世界中,数据可视化变得越来越重要。Light Chaser 是一款基于 React 技术栈的大屏数据可视化设计工具,通过简单的拖拽操作,你可以快速生成漂亮、美观的数据可视化大屏和看板。本文将介绍如何使用 Light Chaser 进行数据…

改善大模型 RAG 效果:结合检索和重排序模型

最近这一两周不少大厂都已经开始秋招面试了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑&am…

【含文档】基于Springboot+Vue的个人博客系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

【吊打面试官系列-MySQL面试题】优化MySQL数据库的方法?

大家好,我是锋哥。今天分享关于【优化MySQL数据库的方法?】面试题,希望对大家有帮助; 优化MySQL数据库的方法? 1、选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置 NOTNULL, 例如’省份’、…

大数据新视界 --大数据大厂之基于 MapReduce 的大数据并行计算实践

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【SpringBoot详细教程】-07-整合Thymeleaf模板引擎与静态资源【持续更新】

关注点一点,友谊深一点 🌲 静态资源访问 在我们开发web应用的时候,需要引入大量的js、css、图片等静态资源。 默认配置 SpringBoot 默认提供的静态资源目录位置需要置于classpath下,目录名需要符合如下规则: /stat…

用ChatGPT做数据分析与挖掘,爽啊

最近已有不少大厂都在秋招宣讲了,也有一些在 Offer 发放阶段。 节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…

34 | 实战一(上):通过一段ID生成器代码,学习如何发现代码质量问题

在前面几篇文章中,我们讲了一些跟重构相关的理论知识,比如:持续重构、单元测试、代码的可测试性、解耦、编码规范。用一句话总结一下,重构就是发现代码质量问题,并且对其进行优化的过程。 前面的内容相对还是偏理论。…

笔记本维修与拆解(一)

清灰: 拆螺丝: 拔掉电池供电: 多按几次开机键,放电: 涂抹硅胶的时候,千万不要涂很多,溢出CPU,如果硅胶溢到焊盘上去的话很容易热胀冷缩短路 【联想拯救者Y9000P和R9000P最简单清灰教程&#xf…

2024年7月大众点评全国美发前百名城市分析

在做一些城市分析、学术研究分析、商业选址、商业布局分析等数据分析挖掘时,大众点评的数据参考价值非常大,截至2024年7月,大众点评美食店铺剔除了暂停营业、停止营业后的最新数据情况分析如下。 分析研究的字段维度包括大众点评数字id、字母…

「Python入门」vscode的安装和python插件下载

粗浅之言,如有错误,欢迎指正 文章目录 前言Python安装VSCode介绍VSCode下载安装安装python插件 前言 Python目前的主流编辑器有多个,例如 Sublime Text、VSCode、Pycharm、IDLE(安装python时自带的) 等。个人认为 vscode 虽然在大型项目上有…

创新大赛:如何在国赛现场赛中脱颖而出?

创新大赛:如何在国赛现场赛中脱颖而出? 前言创意与可行性问题定义讲故事商业价值数据支撑简化表达总结结语 前言 在当今这个快速变化的时代,创新已成为推动社会进步的重要动力。无论是科技、教育、医疗还是日常生活的方方面面,创新…

护眼落地灯到底有没有用?五款好用护眼落地灯分享

护眼落地灯到底有没有用?护眼落地灯既适合日常照明使用,又适合学生以及办公人群使用的一种护眼神器,因此热度一直都很高。但是该行业内的产品也很复杂,其中还有一些劣质不专业的产品掺杂在其中,不但照明效果不佳&#…

SpringBoot集成Matlab软件实战

在项目中处理矩阵等复杂数据结构的时候,可以用Matlab程序来运行,其优点是很多的。 专用工具箱和强大的矩阵运算能力:MATLAB 拥有强大的数学工具箱和优化工具箱,适合处理大规模矩阵运算以及水文模型的率定。MATLAB 的 Optimization…

关于HTML 案例_个人简历展示02

展示效果 用table进行布局label 标签进行关联 例如&#xff1a;点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…