了解HTTPS

news2024/11/17 7:47:59

目录

1.HTTP认识

2.HTTP请求

3.HTTP响应

4.URL

5.HTTP方法

面试题:POST 和 GET区别?

网上关于 GET 与 POST的差别 有待商议

关于请求报头 和 响应报头

6..Host :

7..USer-Agent(简称UA)

8.状态码

9.HTTPS 是在 HTTP 基础上引入的 加密机制

1.尝试加密:

2.传输对称密钥给服务器:

3.非对称加密

4.引入证书

10.常见抓包工具是如何抓包的?


1.HTTP认识

HTTP:"超文本传输协议" 是最当前最广泛的应用层协议。

HTTP可以传输文本,图片,音频文件,视频文件,传输视频等多种数据。

https是htpp的升级版。区别认为 https多了一个“加密层”。安全性更高。

http协议是种典型的一问一答模型的协议

客户端 -> 服务器,服务器 -> 客户端

想要观察http请求/响应的 详细情况 需要用到 Fillder 抓包工具。

抓包:把通过网卡 的数据获取到,并解析出来。

Fiddler 相当于代理。

这个代理 就当与自己的跑腿小弟,我给小弟钱 小弟帮我到商店买东西,这个过程的细节小弟是非常清楚的。


2.HTTP请求

首行:方法 + URL + 版本

1.POST 是HTTP请求的方法。

 中间的部分:URL访问的资源是什么

 HTTP/1.1 :Fiddler表示版本号

2.请求头(header)

从第二行开始一直到 空行 结束。冒号+空格 分割键与值,每对键值对之间以换行分割。

3.空行

请求头结束的标志。

4.正文(body)

有的请求中有body,有的没有。body可以是空的字符串.如果存在body,header中会有Content-Length 和 Content-Type 来表示body的长度 和 类型


3.HTTP响应

1.首行:[版本号 + 状态码 + 状态码解释]

2.响应头(header)

每行是一个键值对,不确定有几行,以 空行 结尾。键和值之间“:+空格”分开。 

响应头 以空行结束。

3.空行

4.正文(body)

对于相应来说,正文通常是HTML,CSS,JS,JSON,图片,音频,字体

总结:


4.URL

唯一资源定位符 Uniform Resource Locator

URI(大写的 i)简单理解为URL的一种中实现。日常不会可以区分这个两个概念。

第一次接触URL 应该是jdbc ,dataSource。设置url,用户名,设置密码。

jdbc:mysql://127.0.0.1:3306/.......

HTPPS:协议方案名,常见有http 和 https,访问mysql时的jdbc:mysql

user:pass  :登录信息,现在网站进行身份验证一般不再通过URL进行。

服务器地址:可以是IP,也可以是域名。

端口号:IP确定主机,端口号确定主机哪一个程序

带层次文件路径:进行确定具体的资源。

查询字符串:对访问的资源进行补充说明,本质是键值对结构

片段标识符:表示一个页面中的某个部分。

对于一个URL,最关心的是四个部分:

1.IP地址(域名)

2.端口号

3.层次路径

4.查询字符串,这个是程序员自定义的

这里的百分号字符 有一大串子,这里是键值对的值进行转义后的结果,通过url encode进行转义,把特殊字符替换掉。

转义规则:把要转义的符号/汉字,每个字节 以十六进制方式表示出来 前面都加上%就可以了


5.HTTP方法

方法就是描述 这个HTTP请求动作要干啥

GET请求场景:

1.直接在浏览器输入一个URL,会触发GET请求

凡是带有百度字样的 都是这个点击百度页面 进一步出发的请求。

2.点击HTML页面中的内容会触发请求。

3.js代码可以出发请求。

POST请求场景

1.登录/注册

2.上传文件

body中的内容是 上传文件的二进制内容(base64转码后内容)

虽然有时候 内容本身就是二进制,但是也会进行转码(不一定urlencode,是base64)


面试题:POST 和 GET区别?

POST 很多时候与 GET 是通用的。

这个方法没有本质区别,(GET能用的场景POST也可以用,POST也是一样)

1.语义不同,方法表示的含义:

GET表示从服务器拿数据。

POST表示从服务器提交数据

如果想使用GET提交数据 也不是不行。但是不常见。不建议使用

2.传递数据的方式不同

GET 传递数据,通常是通过query string(查询寻字符串)把自定义数据提交给 服务器

POST 传递数据,通常是通过body(正文) 把自定义的数据提交给服务器。

(GET也可以加Body,POST也可以加query string 但不推荐)

3.GET方法应对请求,通常设计成“幂等”的,POST方法应对请求,对于“幂等性”则无要求。

什么是幂等?

吃进去的是草,挤出来的是奶。如果吃进去的是草,今天出来的是奶,明天不知道是什么,那就

不幂等,幂等就是讲究结果稳定。

(这只是HTTP标准文档要求的做法,放在今天就不合适了)。

在日常中,幂等 不幂等 实则是看业务要求。 和方法的关系不大。

4.承接幂等性
GET 如果设计成幂等的,此时GET的结果 是可以被缓存的,POST不设计幂等,post就不应该被缓存。


网上关于 GET 与 POST的差别 有待商议

1.网上资料说,POST 比 GET 更加安全。

以登录为例,需要把用户名与密码传输到 服务器,

POST的登录用户名密码是在body上,从浏览器界面上是看不到的。

GET登录 用户名密码是在URL 的query string 中,直接显示到浏览器地址栏,此时 用户名密码是可以看见的。这样的说法太勉强了。

安全性在于 加密。虽然POST是在body中,但是安全性还是不够,别人随便抓包就可以知道了。所以这个两个并没有安全性可言,也不好比较。

2.关于传输的数据量

网上有个说法,GET 请求能够传输 的数据量 有上限。(URL的query string传输数据)URL长度有限。

实际上 HTTP协议没有规定 URL的长度,之所以会这样的说法,因为上古时期IE浏览器引入的限制。

3.传输数据类型

GET只能传输文本数据,POST可以传输文本,也能传输二进制。这个是错误观点。

GET基于query string ,可以把二进制进行urlencode / base64转码,也可给GET添加body,确保使用的库(客户端,服务器) 都支持。

POST 即使传输二进制数据,但是也常常要base64 转码。


关于请求报头 和 响应报头
6..Host :

表示服务器主机地址 和 端口。在URL中已经有所体现。

Content-Length:表示body的数据长度,单位是字节。HTTP基于TCP面向字节流,存在粘包问题,这个就是在解决粘包问题。

如果一个HTTP数据包没有body,此时 空行 就是分隔符。如果有 就用Conten-Length区分。

Content-Type :表示body 的数据格式。取值比较固定:text/html,charset=utf-8.,text/CSS,application/javascript,application/json.....


7..USer-Agent(简称UA)

表示浏览器/操作系统的属性。

红色表示操作系统信息,绿色表示浏览器信息

UA以前的功能是 判别出用户在用什么设备上网,然后针对其设备显示内容比如:显示屏幕的尺寸,需不需要显示图片等等。

现在主要用来统计数据,比如广告在一天中被点击多少次。


3.Refer

表示一个页面从哪里跳转过来的。形如;

直接在浏览器 输入 URL,或者 直接通过收藏夹访问页面是没有 Refer的

主要用于 从浏览器跳转到 广告页面。可以用来区分哪个浏览器 跳转到广告页面的。


4.Cookie

Cookie存储了一个字符串,这个数据可能是 客户端(网页)通过 JS写入的,也可能来自服务器。

(服务器在 HTTP 的header 中 通过 Set-Cookie 字段给浏览器返回数据的)

Cookie也是键值对结构,“;”分割键值对。”:“分割键和值。

Cookie 也是储存 客户端数据 的一种机制。

为了安全,浏览器禁止网页访问 客户硬盘,而是允许网页通过键值对储存数据,这样的键值对储存到硬盘上,浏览器封装好,网页干涉不了。

第一次访问某个网页时,在响应中会有 Set-Cookie这样的header,把一些键值对写到浏览器,进而储存到客户硬盘,下次访问时不需要重新加载所有数据,此时这个网站就会有Cookie

最常见的例子就是,登陆时会直接进入,不需要重新输入密码。

Cookie 是什么?

Cookie是浏览器 本地持久储存数据的一种机制,按照键值对储存。按照域名 为维度分别储存。(每个网站都有自己的Cookie)

Cookie从哪里来?

是服务器返回响应数据中包含 Set-Cookie字段。

Cookie到哪里去?

后续浏览器访问 同一个服务器时,就会把之前储存Cookie带上,发送到服务器这里。


每次请求是独立的,那么服务器是如何知道 我当前请求的前提 是否为登陆状态呢?

客户端发送请求时 带有Cookie,服务器收到Cookie,就会依据session去类似hash结构中查询,验证value没有错误,就认为 已经处于登陆状态。知道了用户的身份。

随着互联网技术的发展,Cookie不是在唯一一个在浏览器储存数据的机制了。


8.状态码

200 : OK表示请求成功与否,以及失败原因。

404 Not Found:访问的资源没有找到,路径错误。

403Forbidden 访问被拒绝

405 Method Not Allowed :方法不被允许

500 服务器内部错误:服务器代码出现bug,没有catch

504 Gateway Timeout:服务器出问题,未在规定时间返回。

302重定向:从A网站跳转到B网站。


9.HTTPS 是在 HTTP 基础上引入的 加密机制

很久以前,客户端与 服务器进行 数据传输都是 明文传输,这种传输是数据 很容易被劫持。

如果中间 路由器 被人动了手脚,数据就很容易泄露。
 

1.尝试加密:

如果对传输的 data(明文) 进行加密(密文) 并且 生成一本 密码本(密钥),这个密码本在接受数据的人手一份。那么这个密码本就很容易落入到 歹徒手里。这样也是不安全的。

因此 大家都知道密钥,黑客搞一个客户端也可以知道密钥。

2.传输对称密钥给服务器:

对称加密 实际就是 客户端 和 服务器 使用同一个密钥。双方建立联系时就将这个密钥传输给对方,以后都会用这个密钥进行解密加密。

这样来看也是不行的,当第一次进行密钥交流时,只要黑客在路由器做手脚,就可以截胡这个密钥。

那我可以不可以 把再次生成一个密钥,来加密真正进行解密的密钥呢,答案也是不行的。情况与上述类似。

3.非对称加密

如果 服务器生成 一把钥匙(公钥)用来给客户端使用,另一把(私钥)用来自己解密怎么样?

也就是说,用非对称加密 去加密 对称加密

公钥给所有的客户端用来加密 密钥,私钥自己留着 用来解密客户端发送过来密文,以得到密钥。

这个 非对称加密 来加密 密钥这个流程看似完美 实则有很大的漏洞。

如果黑客通过浏览器在双方中间伪造 公钥私钥就会泄露密钥。

所以这样的方式也是不行的。

4.引入证书

避免上图那种中间人的攻击,只好引入证书机制。

问题就出现在 客户端第一次跟服务器 进行交流时候。黑客将服务器的公钥掉包。就是说 客户端并不知道服务器的公钥到底可不可靠。

解决这个问题就只好引入 一个权威的认证机构。就是CA机构。

想要搭建服务器使用HTTPS,就需要在CA公证机构这里申请证书(电子,一串数据),提交一些资料:网站域名,营业执照,备案号,公钥等等。

CA机构生产出一个电子证书,内容包含:

认证机构也有自己的 公钥私钥 拿着服务端的公钥后用自己的私钥注册签名,往后客户端拿到的都是服务端的证书(签名和其他数据打包发布到网上就叫做证书)并且CA机构的公钥会发给各种客户端,客户端用CA机构的公钥 去解密证书中的签名,这样客户端就不再请求服务器公钥了,而是请求证书。由于CA机构的公钥是有可能被黑客拿到的,所以客户端拿CA机构的公钥这一操作直接写死在操作系统里面。

有个问题:客户端正确解密证书之后 得到 服务端的公钥,只能知道这个公钥是被认证过的,但是不一定就是目的服务端的公钥,所以证书中还有其他的数据,可以帮检验这个公钥是不是目的服务器的公钥。

如果黑客在第一次从获取证书开始下手:将自己伪造证书传递客户端

如果黑客从后面下手怎么样?


10.常见抓包工具是如何抓包的?

抓包工具之所以能抓包 就是用户已经信任了,抓包工具的证书。

上图就可以看出抓包工具是如何进行获取 对称密钥的。

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

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

相关文章

使用Charles抓包Android App数据

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 抓包环境准备 1. 下载安装charles charles下载地址:https://www.charlesproxy.com/latest-release/download.do 2. SSL代理设置 3. http代理和…

七段 LED 显示器(7段数码管)

7 段 LED 显示器, 通常简称为 LED 数码管 或 数码管. 通过 菜单--绘制--数字芯片--添加 7 段 LED 显示器 可以引入它. 普通模式 它内部其实就是七盏长条状的 LED 灯, 有的横着放, 有的竖着放. 七个灯用 a b c d e f g 分别表示. 灯的位置从上到下, 从里到外顺时针下来, 如上图…

240925-GAN生成对抗网络

GAN生成对抗网络 GAN,顾名思义,gan……咳咳,就是干仗嘛(听子豪兄的课讲说这个名字还真的源于中文这个字),对应的就有两方,放在这里就是有两个网络互相对抗互相学习。类比武林高手切磋&#xff…

iPhone手机备忘录如何克隆到其他手机?

很多苹果用户喜欢使用备忘录记事,它不仅方便用户记录日常事务,还能存储灵感和重要信息。然而,当用户需要更换手机时,尤其是跨系统更换,备忘录内容的迁移便成了一个难题。 为了解决这一问题,用户可以选择使…

亚马逊新手运营如何变优秀?——把简单的事情复杂化!

众所周知,电商运营的基本逻辑看似简单:流量、转化率和利润率的结合等于盈利。然而,这个等式背后隐藏的复杂性常常让新手运营者感到困惑。 他们可能会发现,尽管他们努力增加流量、提高转化率和调整利润率,但仍然无法实…

【可见的点——欧拉函数】

在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(不包括1) 题目 思路 有三个点比较特殊(因为一来这三个点一定可见,同时也无法用gcd 1判断):(0&am…

自己偷偷玩!(NSFW)无内容审查大模型推荐

大家好,我是画画的小强 今天给大家推荐几个(NSFW)无内容审查的大模型,可以让你部署在本地电脑运行! CausalLM-14B CausalLM-14B 是基于阿里通义实验室的大模型 Qwen-14B 加入其他中文数据集训练而来,经过量化和 DPO 算法的重构…

2025台球展,2025河南台球及配套设施展览会3月举办

阳春三月,年度招商季,壹肆柒中国国际台球产业博览会助力全国台球企业拓市场; 2025中国(郑州)国际台球产业博览会(壹肆柒台球展) The 2025 China (Zhengzhou) International Billiards Industry…

朋友圈内容折叠全解析:原因与对策

你是否遇到过精心编写的朋友圈动态被微信自动折叠成一行,甚至出现“叠中叠”现象,多条动态被压缩在一起?这种情况被称为“朋友圈折叠”,它影响着信息的曝光率和互动性。为了帮助你更好地管理朋友圈内容,我将为你详细解…

uni-app App版本更新

效果图: 前言 在移动应用开发中,确保用户能够及时更新到最新版本是非常重要的。本文将介绍如何在 uni-app 中实现 App 整包更新功能,并提供相关代码示例以帮助理解。 代码实现 2.1 引入模块 首先,我们需要引入用于处理更新的模块…

阿博图书馆管理:SpringBoot开发实践

第三章 系统分析 通过对系统功能模块分析可以得知,主要是对项目元素组合、分解和更换做出相应的单元,再通过系统模块来规划出一个原则,系统的设计首先是围绕用户需求进行开发设计的,主要是为了能够更好的管理信息和方便用户&#…

AI智能时代:哪款编程工具让你的工作效率翻倍?

引言 在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编…

MISC - 第七天(练习)

前言 各位师傅大家好,我是qmx_07,今天继续讲解MISC的相关知识点 [BJDCTF2020]just_a_rar 下载之后发现rar压缩包,名称为4位数,使用暴力破解 rar压缩包口令 2016 存放了一张jpg图片 使用StegSolve 工具Flie Format选项卡&#x…

网络编程:掌握TCP Socket和UDP Socket

IP地址: 两台计算机通信,双方都必须有IP地址。 IPV4地址有32位,由四个8位二进制组成,因为不好记所以我们把二进制转化为十进制,比如192.168.0.20,这称为点分十进制。 IPV6有128位,由8个16位的…

Splashtop 自收购 Foxpass 以来新业务增长62%

2024年9月24日 加利福尼亚州库比蒂诺 Splashtop 在简化远程办公解决方案领域处于领先地位,今天宣布继去年收购 Foxpass 之后,新的 Foxpass 业务实现了62%的增长。Splashtop 的 Foxpass Cloud RADIUS 可确保企业 Wi-Fi 网络安全,防止未经授权…

牛羊饲料加工机械成套设备:满足养殖需求

饲料加工机械成套设备在畜牧业中扮演着至关重要的角色,是保障畜禽健康成长和畜牧业发展的重要基础。这些设备通过配料、粉碎、混合等步骤,生产出不同畜禽需求的饲料,为畜牧业的可持续发展提供了有力支持。 饲料加工机械成套设备是牛羊养殖场…

机器学习常用的评价指标原理和代码

最近面试的时候,很多面试官问道了我项目中的一些评价指标的算法和原理,我觉得这确实也是一个很重要的内容,所以趁这个机会综合起来一块复习一下,在刷力扣的时候也不能忘记项目最常用的内容嘛。当然还包括一些深度学习的例如我项目…

OJ在线评测系统 判题机开发 保证Docker容器执行的安全性

实现Docker容器的安全性 我们现在怎么保证使用docker容器执行的安全性? docker只不过实现了系统与系统之间的隔离 真实情况还是需要我们去排查安全问题 毕竟没有绝对的安全 执行超时 占用内存 读文件信息泄露 执行死程序 超时设置 执行容器的时候 增加超时参…

FileLink跨网文件交换:高效、安全、灵活的企业文件传输新方案

在当今数字化时代,企业间的数据交流与协作已成为推动业务发展的关键要素。然而,网络边界的存在往往成为文件传输的障碍,尤其是跨网络环境的文件交换,更是面临诸多挑战。为了打破这一瓶颈,FileLink跨网文件交换系统应运…

《动手学深度学习》笔记2.1——神经网络从基础→进阶 (层和块 - 自定义块)

目录 0. 前言 原书正文(第五章) 第五章 - 第一节 - 层和块 - 自定义块 1. Sequential() PyTorch高级API 2. MLP() 无传入参数 3. MySequential() 传入任意层(块) 4. FixedHiddenMLP() 无传入参数-固定隐藏层 5. NestMLP() 传入嵌套块-多次嵌套 …