| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> Android 深入Http(3)Https的工作机制,头条面试题 -> 正文阅读 |
|
[网络协议]Android 深入Http(3)Https的工作机制,头条面试题 |
比如主题界面。比如b站,你点击哪个分区最多,会多给你推送哪个分区的视频。
分析一下用户喜欢上什么网站,喜欢浏览什么东西。(目的就是广告) 下面来讲两个关于Cookie的危险性
跨站攻击。 假如这个网页的脚本是嗨客写的,那么用户在输入信息后,然后用户又是自动存Cookie,不会告诉服务器(因为不告诉,所以不安全),嗨客就能拿着这些Cookie去做坏事。 就比如用QQ号去注册了不明网站的信息,然后QQ被盗了,然后在QQ空间+全部人转发 羞耻信息 哈哈哈哈哈哈哈哈啊哈 解决方案是使用:
跨站请求伪造,利用了Cookie的自动机制 例如用户登录了一个银行网站,然后又去访问了坏人的网站,然后嗨客就更改了Cookie信息,等到用户下次登录银行网站后,做转钱操作,这个时候Cookie就会更改请求信息,把转钱的url改一下,就转到嗨客手中了。 解决方案是使用: Authorization有两种类别,一种是 Basic 用Http的Request来介绍: 【GET /user Http/1.1 Host:XBao.com
↑其中的xxxx就是信息的Base64码 比如 (rikka:123)–》Base64编码 ,然后放在Basic中。 然后发送请求后,服务器通过验证Basic,来判断用户本人。 但是这个是不是也忒不安全了,毕竟Base64通过码表就能破解了,信息如果被捕获,那不就完了。 所以一般这种东西都是存在本地,在本地做验证… Bearer 相当于一个授权凭证、令牌。 格式为: Authorization:Basic:< bearer token> 这个token是api的token。这个token是授权方给的,所以相较于Basic,它更加安全。 OAuth2 OAuth2是基于Bearer的第三方授权,可以让开发更加安全。 比如我要登录CSDN,然后可以用QQ来授权登录,这个时候 我和QQ是第一方和第二方,CSDN是第三方。(这里也不用分的太清楚) 然后在登录的网页的URL就能看到 一个Client_Id: 这个client_id是CSDN传过去的,是CSDN给QQ的指定id。
在了解完OAuthor2的概念后,我们来具体看一下OAuthor2的工作流程 首先,CSDN向QQ发送授权请求,并且发送client_id,这个client_id是CSDN和QQ在一开始就协商好的,csdn给到qq后,qq说OK,用户要在csdn申请QQ登录,了解。 然后呢QQ接收到了client_id,就会给CSDN返回一个授权码 这个并不是token,因为token很重要,而且OAuthor2不要求使用HTTPS,所以这个中间的信息很有可能被盗用,所以不能传token。那么token如何获取呢? 这个时候CSDN会把Authorization code给其服务器,而这个过程是绝对安全的,不怕被窃取的。 然后CSDN的服务器会去向QQ的服务器发送请求,发送的时候带上了
所以 QQ获取了 client_secret,它就有足够的信息知道,对方是CSDN用户在操作了,这个时候,它就把token传过去了。 这个时候Server拿到token后,OAuthor2的流程就已经结束了。 之后CSDN通过权限,比如去获取QQ的头像、用户名什么的,就会通过Bearer获取: 比如发送一个Request获取头像: 【GET /user/avator Http/1.1 Host:QQ.com Authorization:Bearer< rikka token (base64)>】 微信登录 其实流程就是和上述差不多,也是个标准的OAuthor2流程。 access_token可能会失效,可以通过 https的Refresh Token向对方刷新token,这个时候怎么让对方知道你是原来之前那个人而不是新的人过来骗他盗取信息呢?那只能是通过 所以 client_secert真的很重要,必须要保密。 登录和授权就介绍到这里。 主要是介绍了 Cookie、Authorization,都是比较好理解的。 接下来来介绍下TCP/IP协议族 =========================================================================== 一系列协议所组成的一个网络分层模型。 我们这里就不再讲解TCP的三次握手四次挥手了。因为那个比较简单,大家都懂。 这里主要讲一下为什么网络要分层? 首先看一下下面的数据在网络中的传输图: 从 最理想的情况当然是直接从一个客户端,一条线连接到服务端。数据不走任何节点,但这个不可能发生的。 就是因为经过这么多的节点,所以会出现:总会有那么几个网络节点不稳定。整个网络是不可能一直保持的稳定的,数据的丢失和重传是一定会发生的。比如那种更大数据,就必须使用分段传输了。 而分段传输就必须要分层了。 所以网络的分层模型必须要抽出一层来做数据包分发,这一层就是传输层,TCP。 而TCP、UDP都有网络的需求,它们如果又要分包又要查包又要传包,那它们的工作也太多了。 所以这个时候又专门抽出一层来蒙头传,它不管包的顺序,也不管包到了没有,就是 通过给上层给自己的目标、路由表进行 寻址,然后传数据,这就是网络层、IP层,等传完之后,服务端的网络层把数据往上层 传输层传,让传输层来判断 有没有数据丢了,如果丢了,就告诉自己的TCP层,然后自己的TCP层又装好包让IP层去传数据。 数据链路层就是真实的传数据(每个包的数据),而且是二进制的,10101001的传。 都是些文字,没有图片。可以总结出:网络分层的根本原因是网络不稳定 TCP/IP就到这里,不用多讲,因为本blog并不是专门研究TCP/IP的。 TCP的连接就不讲啦,我们只需知道: HTTP的连接指的就是TCP的连接,因为HTTP本来就是无连接的、无状态的,这是一个概念性的东西。 这里了解完就可以进入HTTPS的学习了。 ========================================================================== 这里进入正题。 HTTPS就是在HTTP的基础上使用了SSL协议(又称TLS协议) 先说大致的步骤:
看到了密钥,就说明了Https里确实是用到了对称加密,先用非对称加密协商对称加密的私钥,再用对称加密来进行交流。 这里先说一下为什么不全程用非对称加密,因为非对称加密太慢了,本来https就很慢,如果通信还是非对称加密的话那就更慢了。 然后我来文字+图解Https的连接,就是客户端向服务端完成一个Https连接的过程。
除了这个字符串,还会附加一些信息,比如
然后从客户端所带的信息里,挑选自己想要使用的 TLS版本、自己喜欢的加密算法。 传过去以后,双方就已经确认好了 TLS版本、Cipher Suit,和各自的随机数。
这个证书包含了服务器的公钥和三级证书。 我们来逐个分析这整个服务器发送给客户端的证书: (1)一级证书:它包含了 (2)二级证书:它首先包含了证书机构的自身信息,并且带上了 (3)三级证书:它又称根证书,它可以验证二级证书是安全的!并且它最权威,它的可靠是官方认证的。 当然,如果连根证书都是有问题的话,那我们是不可能有办法的(因为我们必须无条件信任根证书) 一般都有三级证书,大家(如果是Chrome浏览器)可以点击网站左边的 锁头,然后就可以查看三级证书信息了(根证书很忙的,所以一般不会直签三级证书)
服务器用其发送的
(我也不知道,虽然客户端随机数和服务器随机数都是明文传输的,但是数学上和实际上,这样更加的安全 = =!)
(我也不知道,虽然客户端随机数和服务器随机数都是明文传输的,但是数学上和实际上,这样更加的安全 = =!)
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 10:40:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |