0
点赞
收藏
分享

微信扫一扫

HTTP/HTTPS高频面试题

小贴贴纸happy 2022-02-24 阅读 81

高频题目:HTTP/HTTPS

1.HTTP协议的缓存策略有哪些?

re: 强制缓存、协商缓存

HTTP协议的缓存策略有两种,分别是强制缓存和协商缓存,强制缓存的优先级大于协商缓存。

强制缓存:强制缓存是服务器告诉浏览器一个缓存时间,在缓存时间内,下次请求,直接用缓存,不在时间内,执行协商缓存策略

协商缓存:协商缓存是让客户端与服务器之间能实现缓存文件是否更新的验证、提升缓存的复用率,将缓存信息中的Etag和Last-Modified字段通过请求发送给服务器,由服务器校验。如果文件没有改变,那么直接返回304状态,继续使用浏览器缓存。

参考:牛客解答01

ETag 和 Last-Modified 的区别

Last-Modified 有个缺点就是它是精确到秒的,如果一秒中资源多次服务器不会感知到缓存失效,但这不是一个常见的需求。

补充:ETag : 知乎采用的是 ETag 来判断缓存是否有效,服务器端会在 response headers 中返回 ETag(文件的 hash)

ETag类似 hash码

而一般不推荐使用 ETag,原因有几点

  • Last-Modified 的缺点基本可以忽略不计
  • ETag 本身需要消耗 CPU,而它的优先级比 Last-Modified 高,当它存在时服务器无论 Last-Modified 是否存在都会使用它判断
  • ETag 在分布式系统中生成的值可能不一样,会导致缓存失效

2.HTTPS(安全超文本传输协议)是什么?

re:HTTP的基础上加入了TLS/SSL、内容加密、身份验证、数据完整性

HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的HTTP通道,在HTTP的基础上通过身份认证传输加密阶段保证了传输过程的安全性。

HTTPS 在HTTP 的基础下加入TLS(Transport Layer Security 安全传输层协议)/SSL(Secure Sockets Layer 安全套接层协议),HTTPS 的安全基础是 TLS/SSL,因此加密就需要TLS/ SSL。

HTTPS的特点是:内容加密、身份验证、数据完整性。

链接:牛客网2

​ HTTPS,是以安全为目标的HTTP通道,在HTTP的基础上通过身份认证和传输加密阶段保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入TLS(Transport Layer Security 安全传输层协议)/SSL(Secure Sockets Layer 安全套接层协议),HTTPS 的安全基础是 TLS/SSL,因此加密就需要TLS/ SSL。

​ SSL的全称为Secure Sockets Layer,安全套接层协议。是为网络通信提供安全及数据完整性的一种安全协议。SSL协议在1994年被Netscape(网景)发明,后来各个浏览器均支持SSL。

​ TLS的全称是Transport Layer Security,安全传输层协议。是SSL3.0的后续版本。在TLS与SSL3.0之间存在着显著的差别,主要是它们所支持的加密算法不同,所以TLS与SSL3.0不能互操作。虽然TLS与SSL3.0在加密算法上不同,但是在我们理解HTTPS的过程中,我们可以把SSL和TLS看做是同一个协议。

​ 在HTTPS数据传输的过程中,需要用TLS/SSL对数据进行加密,然后通过HTTP对加密后的密文进行传输,可以看出HTTPS的通信是由HTTP和TLS/SSL配合完成的。

HTTPS的特点:

  1. 内容加密:混合加密方式,对称加密和非对称加密。
  2. 验证身份:通过证书认证客户端访问的是正确的服务器。证书认证
  3. 数据完整性:防止传输的数据被中间人篡改。与hash摘要

3.HTTPS协议如何保证整个传输过程安全?

re: 内容加密、对称加密、非对称加密、真实证书

链接:牛客回答03

​ HTTPS是通过它的特点:内容加密,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。验证身份,保证拿到的证书是目标服务器的真实证书。数据完整性,通过两个摘要判断原文是否被篡改。这三点保证了整个传输过程的安全性。

内容加密:HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输。总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

验证身份:HTTPS为了保证从服务器拿到的证书是目标服务器的证书,需要对证书进行验证。简述过程:通过浏览器内置的一百多个全球知名CA机构公钥轮流解密服务器证书文件,匹配上证明是安全可靠的,否则浏览器会提示此证书不可信。 预先存上了一百多个CA认证机构的公钥

数据完整性:当完成验证身份阶段之后,需要验证打开的证书内容是否被更改。简述过程:将数字证书内容拿出,使用证书中的目标服务器公钥对数字签名内容进行解密获得数据摘要(这是数据原文通过哈希算法计算的结果,一对一,不可逆。),再将原文通过哈希算法得出第二个数据摘要,两个数据摘要比较,如果一样,内容没有被修改,否则HTTPS流程终止。

4.HTTPS协议对称加密的过程?

链接:牛客网4

HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输。总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输。

在整个HTTPS数据传输的过程中一共会涉及到四个密钥:

  1. CA机构的公钥,用来验证数字证书是否可信任
  2. 服务器端的公钥
  3. 服务器端的私钥
  4. 客户端生成的随机密钥

一个HTTPS请求可以分为两个阶段,证书认证阶段和数据传送阶段。又可以细分为六个步骤:

  1. 客户端第一次向服务器发起HTTPS请求,连接到服务器的443(默认)端口。
  2. 服务器端有一个密钥对,公钥和私钥。用来进行非对称加密使用,服务器端保存私钥,不能泄露,公钥可以发送给任何人。服务器将自己的数字证书(包含公钥)发送给客户端。
  3. 客户端收到服务器端的数字证书之后,会对数字证书进行检查,验证合法性。如果发现数字证书有问题,那么HTTPS传输就中断。如果数字证书合格,那么客户端生成一个随机值,这个随机值是数据传输阶段时给数据对称加密的密钥,然后用数字证书中的公钥加密这个随机值密钥,这样就生成了加密数据使用的密钥的密文。到这时,HTTPS中的第一次HTTP请求就结束了。
  4. 客户端第二次向服务器发起HTTP请求,将对称加密密钥的密文发送给服务器。
  5. 服务器接收到客户端发来的密文之后,通过使用非对称加密中的私钥解密密文,得到数据传送阶段使用的对称加密密钥。然后对需要返回给客户端的数据通过这个对称加密密钥加密,生成数据密文,最后将这个密文发送给客户端。
  6. 客户端收到服务器端发送过来的密文,通过本地密钥对密文进行解密,得到数据明文。到这时,HTTPS中的第二次HTTP请求结束,整个HTTPS传输完成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HMrKuurt-1645712050634)(G:\技术积累\面经大法\https总结面经题目.assets\61410CA001F033C9C9E67BDD00D0A7C0)]

5.HTTPS协议中间人攻击是什么?

re:客户端和服务器之间的桥梁、双向获取并且篡改信息

链接:牛客网05

中间人攻击是指攻击者通过与客户端和客户端的目标服务器同时建立连接,作为客户端和服务器的桥梁,处理双方的数据,整个会话期间的内容几乎是完全被攻击者控制的。攻击者可以拦截双方的会话并且插入新的数据内容。

加分回答

中间人攻击的过程:

  1. 服务器向客户端发送公钥。
  2. 攻击者截获公钥,保留在自己手上。
  3. 然后攻击者自己生成一个伪造的公钥,发给客户端。
  4. 客户端收到伪造的公钥后,生成加密哈希(此时加密内容是对称加解密秘钥) 值发给服务器。
  5. 攻击者获得加密哈希值,用自己的私钥解密获得真秘钥。
  6. 同时生成假的加密哈希值,发给服务器。
  7. 服务器用私钥解密获得假秘钥。
  8. 服务器用假秘钥加密传输信息。

中间人攻击的防范方法是服务器在发送浏览器的公钥中加入CA证书,浏览器可以验证CA证书的有效性。有时候浏览器会提示当前网站的证书不被信任,用户不要安装此证书即可。

6.哪些问题是HTTPS无法解决的?

re:被用户浏览器信任的自签证书

链接:牛客网06

自签证书是不被浏览器信任的,如果访问一个网站返回一个自签证书,浏览器会提示安全警告是否信任并且安装,当用户选择信任并且安装的时候,就可能被中间人攻击。中间人通过抓包工具获取到用户的数据包,并且做一个假的服务器证书和用户通信,然后获取到用户输入的私人信息等。自签证书的风险如下:

  • 不受浏览器信任,弹出安全警告,影响用户体验
  • 支持很长的有效期,有效期越长也就越有被攻破的风险

因为HTTPS作用在应用层,如果运输层或链路层被攻击,虽然HTTPS中数据内容不会被影响,但是数据却无法到达。

DDos分布式拒绝服务攻击:攻击出现在运输层,通过大量的客户端与服务器连接,在服务器等待客户端第三次握手时,客户端不给予反馈,这时候服务器连接缓冲区会被占满,当缓冲区满了之后,不会接受新的请求,最终导致计算机网络无法正常提供服务。

举报

相关推荐

0 条评论