前端面试题 - 83. 聊聊https

221 阅读6分钟

https是什么

HTTPS是一种安全的网络通信协议,在HTTP上添加了SSL/TLS加密层,通过数字证书来保证数据传输过程中的机密性、完整性和可信度。

相比于HTTP,HTTPS具有以下优点:

  1. 安全:通过加密传输、服务器验证和数据完整性验证等多种技术手段,保证了数据在传输过程中的机密性、完整性和可信度。这使得攻击者难以截取或篡改数据。
  2. 可信:HTTPS使用数字证书来验证服务器的身份,确保建立的连接是与真正的目标服务器进行通信,而不是被恶意攻击者冒充的服务器。这增强了用户对网站的信任度。
  3. 支持SEO:HTTPS是Google搜索引擎的官方推荐,因此使用HTTPS可以提高网站在搜索引擎排名中的权重,从而提高网站的流量和曝光率。
  4. 隐私:由于HTTPS保证了数据传输的安全性,所以用户提交的敏感信息(如密码、信用卡信息等)更加安全。这对于需要处理用户敏感信息的网站非常重要。
  5. 向未来发展:随着互联网技术的发展,越来越多的网站正在向HTTPS协议转移,这也是一个趋势和未来的发展方向。

SSL/TLS的全称是Secure Sockets Layer/Transport Layer Security,中文意思为安全套接字层/传输层安全协议。它是一种加密通信协议,用于保护网络通信的安全性和隐私性。SSL是TLS的前身,现在大多数情况下都使用TLS进行加密通信。SSL/TLS主要用于Web浏览器和Web服务器之间的通信、电子邮件传输、文件传输等场景中。

https是如何保证数据传输的安全的?

HTTPS是一种在HTTP协议基础上添加了安全层的协议,可以保证数据在客户端和服务器之间传输时的安全性。具体来说,HTTPS通过以下方式保护数据传输的安全:

  1. 加密传输: HTTPS使用SSL/TLS协议对数据进行加密传输,使得网络窃听者无法截取到数据包内容。
  2. 服务器验证: 在HTTPS连接建立时,客户端会验证服务器的证书,确保连接的目标服务器是实际的服务器,而不是一个冒充的服务器。
  3. 数据完整性验证: HTTPS使用数字签名技术对传输的数据进行校验,确保数据在传输过程中没有被篡改或损坏。

https的请求可以拦截么,如何做?

https请求是基于SSL/TLS协议传输的,会对数据进行加密,因此一般情况下是无法被拦截的。

拦截HTTPS请求:

  1. 中间人攻击(MITM)

中间人攻击是一种通过欺骗用户和服务器之间的通信,来窃取或篡改数据的攻击方式。攻击者会伪造一个虚假的数字证书并将其安装在用户设备上,从而使得所有的HTTPS请求都被重定向到攻击者控制的服务器上。这样攻击者就能够窃取用户提交的敏感信息。例如,以下是一种中间人攻击的示例:

  • 攻击者在公共WiFi上伪造一个受害者网站的域名,并伪造一个虚假的数字证书。
  • 受害者使用WiFi连接公共网络,访问该网站时,客户端会收到攻击者伪造的数字证书并建立连接。
  • 攻击者代理客户端向服务器发送请求,并代理服务器向客户端响应数据。攻击者可以在数据传递过程中窃取或篡改数据。
  1. SSL剥离技术

SSL剥离是一种中间人攻击技术,攻击者会通过某些手段将HTTPS流量解密,然后再对解密后的流量进行监听和篡改。例如,以下是一种SSL剥离的示例:

  • 攻击者在中间位置(如路由器)上设置一个代理服务器,并欺骗用户将其配置为代理。
  • 用户启用了代理之后,代理服务器会伪造受害者网站的数字证书并安装到用户设备上。
  • 当用户访问该网站时,代理服务器会拦截HTTPS请求,并使用伪造的证书与目标服务器建立连接。
  • 攻击者成功窃取用户提交的敏感信息。

为了确保https请求的安全性,可以采取以下措施:

  1. 使用可信任的CA证书,确保证书的真实性和有效性;
  2. 避免使用公共Wi-Fi等不安全的网络环境;
  3. 安装和使用防火墙和杀毒软件,确保计算机的安全性;
  4. 对敏感数据进行加密处理,比如使用AES等加密算法加密数据。

讲解一下https对称加密和非对称加密?

对称加密

https中使用对称加密是在传输数据时使用的。具体来说,当客户端与服务器之间的通信需要加密时,首先会建立一个安全的TLS/SSL握手过程,然后使用对称密钥对数据进行加密和解密。这个对称密钥是在握手过程中协商生成的,并被双方用于加密和解密数据,以确保数据在传输过程中能够得到保护。

非对称加密

非对称加密指的是使用公钥和私钥进行加密和解密操作。公钥可以公开发布,任何人都可以获得其公钥;而私钥只能由持有者保存,并且不能泄露给他人。非对称加密算法安全性更高,在数据加密和数字签名等领域得到了广泛应用。

  1. 数字证书签发和验证

数字证书是由数字证书认证机构(CA)签发的一种电子凭证,用于证明服务器身份的合法性。在数字证书中,使用了非对称加密算法来对证书进行签名和验证,以保证证书的真实性和完整性。

  1. 密钥交换

在HTTPS通信过程中,客户端和服务器需要共享一个密钥来进行加密和解密操作。但是,如何安全地将密钥传输给对方是一个问题。这时就可以利用非对称加密算法来进行密钥交换。具体地,客户端使用服务器的公钥加密一个随机数并发送给服务器,服务器再使用私钥解密随机数。之后,客户端和服务器使用协商好的密钥来进行加密和解密操作。

  1. 数据完整性校验

在HTTPS通信过程中,为了防止数据在传输过程中被篡改,需要对数据进行完整性校验。这时可以使用哈希函数和数字签名技术来实现。具体地,服务器会对数据进行哈希运算,并使用自己的私钥对哈希值进行签名。客户端收到数据后,使用公钥来验证签名的真实性和完整性。