浏览器相关

浏览器

  • 说下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最终的加解密过程:

image.png

认证过程

浏览器拿到数字证书后,如何来对证书进行认证呢?
首先,会读取证书中的明文内容。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
来源:掘金

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值