浏览器
-
说下http跟https的区别
- 对称加密
对称加密是最简单的方式,指的是加密和解密用的是同样的密钥;
如果使用对称加密的方式,那么第三方可以在中间获取到client_random、server_random和加密方法,由于这个加密方法同时可以解密,所以中间人可以成功对暗号进行解密,拿到数据,很容易就将这种加密方式破解了
- 非对称加密
如果有 A、 B 两把密钥,如果用 A 加密过的数据包只能用 B 解密,反之,如果用 B 加密过的数据包只能用 A 解密;
如果使用非对称加密。在这种加密方式中,服务器手里有两把钥匙,一把是公钥,也就是说每个人都能拿到,是公开的,另一把是私钥,这把私钥只有服务器自己知道。
好,现在开始传输。
浏览器把client_random和加密方法列表传过来,服务器接收到,把server_random、加密方法和公钥传给浏览器。现在两者拥有相同的client_random、server_random和加密方法。然后浏览器用公钥将client_random和server_random加密,生成与服务器通信的暗号。
这时候由于是非对称加密,公钥加密过的数据只能用私钥解密,因此中间人就算拿到浏览器传来的数据,由于他没有私钥,照样无法解密,保证了数据的安全性。
这难道一定就安全吗?聪明的小伙伴早就发现了端倪。回到非对称加密的定义,公钥加密的数据可以用私钥解密,那私钥加密的数据也可以用公钥解密呀!
服务器的数据只能用私钥进行加密(因为如果它用公钥那么浏览器也没法解密啦),中间人一旦拿到公钥,那么就可以对服务端传来的数据进行解密了,就这样又被破解了。而且,只是采用非对称加密,对于服务器性能的消耗也是相当巨大的,因此我们暂且不采用这种方案。
- 现在浏览器一般是用什么加密方法?说下为何?
对称加密和非对称加密的结合,浏览器向服务器发送client_random和加密方法列表。服务器接收到,返回server_random、加密方法以及公钥。
浏览器接收,接着生成另一个随机数pre_random, 并且用公钥加密,传给服务器。(敲黑板!重点操作!)服务器用私钥解密这个被加密后的pre_random。
现在浏览器和服务器有三样相同的凭证:client_random、server_random和pre_random。然后两者用相同的加密方法混合这三个随机数,生成最终的密钥。
然后浏览器和服务器尽管用一样的密钥进行通信,即使用对称加密。这个最终的密钥是很难被中间人拿到的,为什么呢? 因为中间人没有私钥,从而拿不到pre_random,也就无法生成最终的密钥了。
- 数字证书
尽管通过两者加密方式的结合,能够很好地实现加密传输,但实际上还是存在一些问题。黑客如果采用 DNS 劫持,将目标地址替换成黑客服务器的地址,然后黑客自己造一份公钥和私钥,照样能进行数据传输。而对于浏览器用户而言,他是不知道自己正在访问一个危险的服务器的。
事实上HTTPS在上述结合对称和非对称加密的基础上,又添加了数字证书认证的步骤。其目的就是让服务器证明自己的身份。
传输过程
为了获取这个证书,服务器运营者需要向第三方认证机构获取授权,这个第三方机构也叫CA(Certificate Authority), 认证通过后 CA 会给服务器颁发数字证书。
这个数字证书有两个作用:服务器向浏览器证明自己的身份。
把公钥传给浏览器。这个验证的过程发生在什么时候呢?
当服务器传送server_random、加密方法的时候,顺便会带上数字证书(包含了公钥), 接着浏览器接收之后就会开始验证数字证书。如果验证通过,那么后面的过程照常进行,否则拒绝执行。 - 对称加密
现在我们来梳理一下HTTPS最终的加解密过程:
认证过程
浏览器拿到数字证书后,如何来对证书进行认证呢?
首先,会读取证书中的明文内容。CA 进行数字证书的签名时会保存一个 Hash 函数,来这个函数来计算明文内容得到信息A,然后用公钥解密明文内容得到信息B,两份信息做比对,一致则表示认证合法。
当然有时候对于浏览器而言,它不知道哪些 CA 是值得信任的,因此会继续查找 CA 的上级 CA,以同样的信息比对方式验证上级 CA 的合法性。一般根级的 CA 会内置在操作系统当中,当然如果向上找没有找到根级的 CA,那么将被视为不合法。
- 三次握手是什么?
-
为什么要三次握手?
-
握手时可以携带数据吗?
-
握手失败后会发生什么?
-
- 断开连接的时候四次挥手是什么?
- 为什么要四次才可以?
- WAIT_TIME时发生了什么?
- 等待时间一般多久?为什么?
- 说下你认为请求头有哪些关键词
- 重排重绘区别?
- 开发中需要怎么避免?
- 有何优化方式?
- 浏览器输入url发生哪些事情?
- 网络层?
- 渲染层?
- xss,csrf攻击分别是什么?
- 怎么防止?
https://tech.meituan.com/2018/10/11/fe-security-csrf.html
- 怎么防止?
- 说下缓存的区别?
- cookie跟storage有什么区别?
- cookie是浏览器的漏洞吗?它是怎么弥补的?
- 什么是跨域?
- 浏览器如何检测跨域?
预检请求 - 跨域的本质是?
不同源
协议名,域名,端口号不一致都是跨域
cookie中的domin不一致请求接口的时候不会携带 - jsonp为何不携带cookie信息?
因为你请求的是另一个域名下的接口 只会携带另一个域名下的cookie
- 浏览器如何检测跨域?
感谢:
作者:神三元
链接:https://juejin.cn/post/6844904021308735502
来源:掘金