[QA]反劫持相关

2019-06-29  本文已影响0人  yumiii_

一、CDN相关

CDN,即内容分发网络,简单说就是把静态数据分布在很多CDN节点服务器上,CDN系统能实时根据网络流量和各节点的连接、负载情况以及用户的距离和响应时间等综合信息将用户的请求重新导向到离用户最近的服务节点上。

HTTP请求的过程:DNS解析成IP地址,根据ip地址查找服务器,向服务器发送get/post请求,服务器将资源返回给用户。
查找服务器的过程中,到底指定哪台服务器来处理请求,是需要负载均衡设备来分配用户请求的。同时,当资源返回给用户的浏览器时,可能会有一些静态资源如CSS/图片等,又会发起另外的HTTP请求,这些请求可能又会被分发到不同的CDN服务器上。
1.访问CDN的过程如下图:

image.png
先后经过全局负载均衡系统,区域均衡负载系统,离客户端最近且又相应资源的CDN缓存服务器获取服务器的IP地址。
2.回源
一般图片 视频 和一些静态内容都会放到CDN上,CDN失效时访问回源Server获取数据,俗称 回源。
动态内容都需要通过访问源server获取数据,根据CDN原理可以找到最快的链路来完成整个链接和数据传输

二、劫持

劫持有DNS劫持和HTTP劫持

  1. DNS劫持
    DNS劫持又称域名劫持,主要是在DNS服务器解析上做手脚,效果是返回的是假的ip地址,DNS劫持的过程一般是攻击运营商服务器达到的。
    反劫持方案:最有效的解决方案就是提前在自己的app中将解析好的域名以ip的形式发出去,使用ip直接访问server,绕过DNS服务器(这种方式也同时放弃了CDN动态加速提供的便捷)业界通用的方案是阿里的HttpDNS。
  2. HTTP劫持
    HTTP内容劫持是客户端与正确的服务端建立链接后,在传输数据的过程中数据链路被劫持,在中间加入了一些数据。常见的劫持是采用分光器在原数据的相关位置插入一些包????
    反劫持方案:使用HTTPS(HTTP+SSL)代替HTTP

https,就是在http协议加上一个安全通道,通过握手和签名验证保证通道是安全可行的。
对称加密:是AB双方使用相同的秘钥 和规则进行加解密

对称加密算法的优、缺点:
优点:算法公开、计算量小、加密速度快、加密效率高。适用于请求内容比较大的。
缺点:(1)交易双方都使用同样钥匙,安全性得不到保证;
(2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。
(3)能提供机密性,但是不能提供验证和不可否认性。

非对称加密:相对更加安全,Server端手握私钥,给Client下发公钥来解密数据。适用于秘钥比较小且保密性要求高的。但是也有很明显的缺点:
(1)CPU计算资源消耗非常大。一次完全TLS握手,密钥交换时的非对称解密计算量占整个握手过程的90%以上。而对称加密的计算量只相当于非对称加密的0.1%,如果应用层数据也使用非对称加解密,性能开销太大,无法承受。
(2)非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是2048位,意味着待加密内容不能超过256个字节。
无论是哪种加密方式,server都需要把秘钥传给client端,那么中间人攻击就可能发生在这个环节。为了解决中间人的劫持问题,我们会把公钥提供给相关机构CA,CA将公钥放入数字证书颁发给我们,证书都是基于域名的,server把证书发给client,client如果发现证书是经过CA认证的,就认为是可靠的。

  1. http 和 https 在反劫持上的区别(没大懂,直接复制粘贴的)
    Http请求可以使用ip替代域名来访问来解决DNS劫持,也可以使用https来解决http内容劫持的问题。
    而Https请求也存在被DNS劫持的问题,但是Https不能直接用ip来替代域名进行请求,原因如下:
    (1)直接使用ip访问不能使用CDN动态加速特性
    (2)直接使用ip替换域名后,请求到达服务端后下发的证书都是跟域名绑定的,这时候域名和请求ip无法直接验证合法性
    所以在Https下,解决方案是请求时使用域名,本地获取域名和ip的映射,或者使用HttpDNS获取ip,然后在建立链接的时候在socket层替换ip,这样可以保证DNS解析没问题,且最后验证证书的时候可以做域名的匹配检查。

Reference:

关于 cdn、回源等问题一网打尽
SSL/TLS握手过程详解

上一篇下一篇

猜你喜欢

热点阅读