什么是 http劫持,DNS劫持为何物?
HTTP 劫持是在使用者与其目的网络服务所建立的专用数据通道中,监视特定数据信息,提示当满足设定的条件时,就会在正常的数据流中插入精心设计的网络数据报文,目的是让用户端程序解释“错误”的数据,并以弹出新窗口的形式在使用者界面展示宣传性广告或者直接显示某网站的内容。
DNS 劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的 IP 地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。
产生的原因
①广告插码
发布“流氓广告”的厂商以推销他们的产品形式,将广告投放到各个应用中。
②中小运营商节省流量成本,使用缓存技术,制造一个网速“飞快”的假象
一些中小运营商或者宽带运营商,为了节省流量成本,建立很多类似于缓存技术,多是做假象,直接在内部做一个缓存。
③恶意攻击
竞争对手的攻击,都是属于劫持类的。应用被非法广告植入,数据被非法缓存,被恶意攻击,已成为一种危害。
怎么劫持的呢?
劫持主要是:向客户端发起一个请求向DNS服务器,然后去请求我们的IP。这有三个因素,第一来自网络运营商的机房,这时候有一些漏洞,可能会被内部一些人员或者是一些牟利的机构加以利用。对请求的数据还有来源进行一些篡改。第二,常见的就是“三大运营商”经常做一些推广,向应用接口直接发一些他们的推广信息。他们会直接去劫持拦截你的数据,返回运营商,提示你充值一些数据。
造成的危害
①应用数据无法更新
②非法跳转,导致页面数据无法展示
③弹出广告影响视觉
④内嵌非法内容影响 APP 产品形象
反劫持实战
①数据合法性校验
合法性管理校验是唯一评判这个数据是否有效的一个手段。他包括两个内容,一个是数据是否完整,还有一个数据的时效性。
合法性的判断来说我们还是惯用的,会去用一个内容生成一个校验串,进行一个验证。如果校验串不匹配,会判定为数据是非法的,被篡改的。
②数据时效性校验
时效性的判断,我们会在数据内容有一个约定,证明数据产生的时间点,客户端有一个校验保证。针对应用里边的页面内容,会对页面的内容以及跳转地址会进行一个黑白名单的匹配,这样来去判别这些数据是否是合法的时效性保证的。
解决方案
①域名劫持
首先针对域名劫持来说,如果是DNS劫持,根据它的原理DNS是指向被篡改的IP,需要打破通用的DNS获取的方式。所以使用一种Http DNS的技术。这个技术简单来说就是使用Http的方式,将以往的传统的DNS协议替换为Http包装的域名解析的一个IP地址的集合。如果是针对Http链路层的解释,数据篡改的内容,直接对链接进行修改的重试,可以让错误的请求有机会通过我们加设的反向代理机制,帮助他在获取正确的数据。
【HttpDNS的原理】
首先这是一个终端用户,他以前获取目标服务器的方式直接提供域名,访问目标服务器。现在如果他根据之前的图示,他走传统的DNS解析服务器方式的话,如果遭受DNS解析,他可能指向错误的服务器。这个HttpDNS方式就是打破传统的DNS解析的路径,将DNS通过一个HttpDNS服务器的方式去帮他去从真正的DNS服务器,把目标IP方式返回到最终用户。用户再根据返回的真正的IP地址去返回目标服务器。通过这个方式去对DNS劫持方式进行一个有效的访问率的反制。有时候他返回的IP可能不止一个,客户端拿到IP以后,在客户端来说是注意加速请求的响应,客户端有对被审的IP进行一个测速。每次会根据一个失效周期会阶段性的对这个IP进行速度的测速,实时转换。这样保证我们提供的IP是最快速,能够让用户这些请求快速的达到正确的。
②运营商缓存
运营商缓存这种情况来说,他也是缓存的机制。可以在他的请求的Url串里面添加,缓存运作,这时候可以把缓存的方式来得到解决。
③非法跳转
非法跳转是在客户端的浏览器的加载,应用黑白名单策略的匹配。通过这些方式来去实现反劫持的一些措施。
④非法内容插入
更多方式
①网络择优
②劫持日志系统
首先他会能够根据我们之前的如何判定一个劫持的情况,在客户端搜集劫持的一个状况,他会把劫持的类型部分被劫持的接口给客户端,通过在有网比较快速的情况下,WIFI情况下发送中心服务器去实现这样的搜集。并且他是经过压缩,尽可能的保护流量的节省。