一种检测客户端dns劫持的方法及装置的制造方法

文档序号:10572710阅读:286来源:国知局
一种检测客户端dns劫持的方法及装置的制造方法
【专利摘要】本发明公开了一种检测客户端DNS劫持的方法及装置,属于检测技术领域。该检测客户端DNS劫持的方法,包括:在检测到客户端发生登录后,获取所述客户端发送的网页认证请求,所述网页认证请求的请求参数依据加密协议进行设置;对所述网页认证请求的请求参数进行验证,如果验证失败,则确定所述客户端发生DNS劫持。该检测客户端DNS劫持的方法,检测成本低廉,处理效率高,且检测结果准确。
【专利说明】
一种检测客户端DNS劫持的方法及装置
技术领域
[0001]本发明涉及检测技术领域,特别涉及一种检测客户端DNS劫持的方法及装置。
【背景技术】
[0002]DNS(Domain Name System,域名系统):因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数字串。
[0003]DNS劫持又称为域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其结果是对特定的网络不能反应或访问的是假网址。
[0004]目前,很多客户端软件大量采用了窗体内嵌网页的展现形式,称之为“微端”,其好处是开发成本低,更新便捷。用户在访问微端时,效果相当于用网络浏览器访问页面,因此,其也会遇到DNS劫持。所谓DNS劫持,是指某些网络运营商为了自身利益,在DNS服务器上拦截浏览器发出的域名解析请求,当发生指定的域名请求时,返回虚假的IP地址,从而造成的后果是:用户访问的是虚假内容的页面或者非法网页,不仅软件的基本功能不能正常使用,甚至会误导用户进行非法访问、付费等操作,不仅影响网络安全,还会造成用户财产损失。
[0005]现有技术中,通过比较页面内容来检测DNS是否被劫持,具体而言,通过服务器信息推送,客户端可以获取并预存目标页面的特征文本,例如页面标题或者页面内容的关键字等。当发生页面请求后,客户端先进行页面加载,再获取页面的现场信息,最后判断是否包含预设的关键字,若为否,则可以判定为DNS劫持。该种检测方式的缺点主要有:一是需要推送和维护存有网页特征文本的字典表,通讯和存储的成本较高;二是需要对每个网页需要事先加载后才能判定,处理效率较低。

【发明内容】

[0006]本发明实施例提供了一种检测客户端DNS劫持的方法及装置,检测成本低廉,处理效率高,且检测结果准确。
[0007]本发明实施例提供的技术方案如下:
[0008]—方面,提供了一种检测客户端DNS劫持的方法,包括:
[0009]在检测到客户端发生登录后,获取所述客户端发送的网页认证请求,所述网页认证请求的请求参数依据加密协议进行设置;
[0010]对所述网页认证请求的请求参数进行验证;
[0011 ]如果验证失败,则确定所述客户端发生DNS劫持。
[0012]优选地,如果验证成功,所述方法还包括:
[0013]接收返回的字符串;
[0014]对所述字符串进行验证;
[0015]如果所述字符串验证失败,则确定所述客户端发生DNS劫持;
[0016]如果所述字符串验证成功,则确定所述客户端未发生DNS劫持。
[0017]优选地,所述方法还包括:
[0018]在确定所述客户端发生DNS劫持后,以本地网页形式提醒所述客户端发生DNS劫持;
[0019]在确定所述客户端未发生DNS劫持后,在所述客户端中正常显示微端。
[0020]优选地,所述网页认证请求的请求参数包括:用户ID、时间戳和密钥,所述对所述网页认证请求的请求参数进行验证,包括:
[0021 ] 对所述用户ID、时间戳和密钥的组合进行MD5加密后的MD5值进行验证。
[0022]优选地,所述对所述字符串进行验证,包括:
[0023]获取预设字符串的MD5值;
[0024]根据返回的字符串中的用户ID、时间戳结合密钥计算对应的MD5值;
[0025]比较预设字符串的MD5值与计算出的MD5值是否相同,如果是,则确定字符串验证通过;否则,确定字符串验证失败。
[0026]另一方面,提供了一种检测客户端DNS劫持的装置,包括:
[0027]获取模块,用于在检测到客户端发生登录后,获取所述客户端发送的网页认证请求,所述网页认证请求的请求参数依据加密协议进行设置;
[0028]第一验证模块,用于对所述网页认证请求的请求参数进行验证;
[0029]第一确定模块,用于在所述网页认证请求的请求参数验证失败后,确定所述客户端发生DNS劫持。
[0030]优选地,所述装置还包括:
[0031]接收模块,用于在网页认证请求验证成功后,接收返回的字符串;
[0032]第二验证模块,用于对所述字符串进行验证;
[0033]第二确定模块,用于在所述字符串验证失败后,确定所述客户端发生DNS劫持;
[0034]第三确定模块,用于在所述字符串验证成功后,确定所述客户端未发生DNS劫持。
[0035]优选地,所述装置还包括:
[0036]提醒模块,用于在确定所述客户端发生DNS劫持后,以本地网页形式提醒所述客户立而发生DNS劫持;
[0037]显示模块,用于在确定所述客户端未发生DNS劫持后,在所述客户端中正常显示微端。
[0038]优选地,所述网页认证请求的请求参数包括:用户ID、时间戳和密钥;
[0039]所述第一验证模块,用于对所述用户ID、时间戳和密钥的组合进行MD5加密后的MD5值进行验证。
[0040]优选地,所述第二验证模块,包括:
[0041 ]获取单元,用于获取预设字符串的MD5值;
[0042]计算单元,用于根据返回的字符串中的用户ID、时间戳结合密钥计算返回字符串的MD5值;
[0043]比较单元,用于比较预设字符串的MD5值与计算出的MD5值是否相同;
[0044]确定单元,用于在比较单元比较出的MD5值相同后,确定字符串验证通过;否则,确定字符串验证失败。
[0045]本发明实施例提供的检测客户端DNS劫持的方法及装置,在检测到客户端发生登录后,获取客户端发送的网页认证请求,网页认证请求的请求参数依据加密协议进行设置;对网页认证请求的请求参数进行验证;如果验证失败,则确定客户端发生DNS劫持。该检测客户端DNS劫持的方法,检测成本低廉,处理效率高,且检测结果准确。
【附图说明】
[0046]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0047]图1是本发明实施例提供的一种检测客户端DNS劫持的方法的流程图;
[0048]图2是本发明实施例提供的另外一种检测客户端DNS劫持的方法的流程图;
[0049]图3是本发明实施例提供的另外一种检测客户端DNS劫持的方法的流程图;
[0050]图4是本发明实施例提供的一种检测客户端DNS劫持的装置的框图;
[0051]图5是本发明实施例提供的另外一种检测客户端DNS劫持的装置的框图;
[0052]图6是本发明实施例提供的另外一种检测客户端DNS劫持的装置的框图;
[0053]图7是本发明实施例提供的另外一种检测客户端DNS劫持的装置的框图。
【具体实施方式】
[0054]为了使本领域技术人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
[0055]本发明实施例提供一种检测客户端DNS劫持的方法,如图1所示,包括如下步骤S101-S103:
[0056]在步骤SlOl中,在检测到客户端发生登录后,获取客户端发送的网页认证请求,网页认证请求的请求参数依据加密协议进行设置。
[0057]在本实施例中,网页认证请求可以是Get请求,具体可以通过客户端向服务器的安全认证页面发送Get请求来加以实现,其中,Get请求的请求参数根据双方约定的加密协议进行设置。考虑到认证过程应在微端页面访问前完成,而且不能影响客户端的正常使用,可以另起一条工作者线程来实施。其中,安全认证页面根据客户端的微端请求的域名情况可以是一个或多个,安全认证页面应当是相应域名下的页面。
[0058]本实施例中以一个域名为例进行说明:
[0059]例如,所有微端页面的域名是“XX.cn”,安全认证页面是“http: //xx.cn/verify.php?uid =林*&time =林*&sign =林*,,,其中,“uid = *林&time =林*&sign =林*,,
为发送Get请求时双方约定的和加密后的参数,其中:uid是用户id(也称用户ID、用户身份证明);time为unix时间戳;sign=md5(uid+time+key),即由uid、time、key组合而成的字符串进行MD5加密后的加密值,密钥key由客户端和服务端共同约定。
[0060]需要说明的是,当客户端的“微端”界面存在多个域名访问的情况,在做识别时,可以采用逐个验证的方式。为了进一步保证提高识别的可靠性,可以增加重试次数。
[0061 ] 在步骤S102中,对网页认证请求的请求参数进行验证。
[0062]具体可以通过服务器的安全认证网页,对客户端发送的Get请求的请求参数进行验证加以实现,根据验证成功或者失败返回不同的内容,例如,验证失败会返回fail,验证成功则返回字符串。其中,返回的字符串的格式为:uid,time,sign,三个值之间用半角逗号连接,当然也可以采用其它格式,例如xml、json格式等;uid和time通过网页返回,sign =md5(uid+time+l+key)。其中,上述计算sign的公式中“I”是一个随机扰动,在安全级别要求比较高的情况下,可以用其它随机字符串取代。
[0063]在步骤S103中,如果步骤S102中的网页认证请求的请求参数验证失败,则确定客户端发生DNS劫持。
[0064]其中,通过上述步骤S102返回的不同结果,可以确定客户端是否发生劫持,具体而言,当返回fail时,或者返回客户端不能识别的内容时,认为网页认证请求认证失败,确定客户端发生劫持。
[0065]本发明实施例提供的检测客户端DNS劫持的方法,在检测到客户端发生登录后,获取客户端发送的网页认证请求,网页认证请求的请求参数依据加密协议进行设置;对网页认证请求的请求参数进行验证;如果验证失败,则确定客户端发生DNS劫持。该检测客户端DNS劫持的方法,检测成本低廉,处理效率高,且检测结果准确。
[0066]在另外一个实施例中,如图2所示,如果上述步骤S102中网页验证请求的请求参数验证成功,上述检测客户端DNS劫持的方法还包括步骤S201-S203:
[0067]在步骤S201中,接收返回的字符串;
[0068]在步骤S202中,对返回的字符串进行验证;
[0069]如果字符串验证失败,则执行步骤S103:确定客户端发生DNS劫持;
[0070]如果字符串验证成功,则执行步骤S203:确定客户端未发生DNS劫持。
[0071 ]在本实施例中,客户端接收到字符串后对uid ,time,sign三个值进行验证,其中,time时间和当前取得的时间戳不能超过预设值,以防止各服务器时间差太大,其中,预设值例如可以为100s,预设值可以根据实际需要进行调整,同时对网页传过来的sign进行验证,验证成功表示域名“xx.cn”未被劫持。
[0072]本发明实施例提供的检测客户端DNS劫持的方法,在网页认证请求认证成功后,进一步对返回的字符串进行验证,根据字符串验证结果来确定客户端是否发生DNS劫持,能够有效保证检测结果的准确性。
[0073]在另外一个实施例中,如图3所示,上述检测客户端DNS劫持的方法还包括步骤S301-S302:
[0074]在步骤S301中,在确定客户端发生DNS劫持后,以本地网页形式提醒客户端发生DNS劫持;
[0075]在步骤S302中,在确定客户端未发生DNS劫持后,在客户端中正常显示微端。
[0076]本发明实施例提供的检测客户端DNS劫持的方法,在确定客户端发生DNS劫持后,以本地网页形式提醒客户端发生DNS劫持,能够有效提醒用户发生了 DNS劫持,从而引起用户的注意;在确定未发生DNS劫持后,在客户端中正常显示微端,从而使用户能够继续进行浏览。
[0077]在一个实施例中,上述网页认证请求的请求参数包括:用户ID、时间戳和密钥,对网页认证请求进行验证,包括:对用户ID、时间戳和密钥的组合进行MD5加密后的MD5值进行验证。
[0078]在另外一个实施例中,上述对字符串进行验证,包括步骤S1-S3:
[0079]在步骤SI中,获取预设字符串的MD5值;
[0080]在步骤S2中,根据返回的字符串中的用户ID、时间戳结合密钥计算对应的MD5值;[0081 ]在步骤S3中,比较预设字符串的MD5值与计算出的MD5值是否相同;如果是,则确定字符串验证通过;否则,确定字符串验证失败。
[0082]其中,在待验证端输入特定的字节串(预设字符串),采用MD5加密生成一个128位的字符串,验证端接收到待校验数据后解析出相关参数,也计算出一个MD5字符串,比较两个MD5字符串,如果相等则通过验证,如果不等则未验证通过。
[0083]本发明实施例能够有效检测出客户端DN S被劫持的情况,可靠率基本能达到100%,根据检测结果,客户端可以及时屏蔽非法网页并提示用户,避免用户错误点击甚至是财广损失。
[0084]相应地,本发明实施例还提供一种检测客户端DNS劫持的装置,如图4所示,包括:
[0085]获取模块401,用于在检测到客户端发生登录后,获取客户端发送的网页认证请求,网页认证请求的请求参数依据加密协议进行设置;
[0086]第一验证模块402,用于对网页认证请求的请求参数进行验证;
[0087]第一确定模块403,用于在网页认证请求的请求参数验证失败后,确定客户端发生DNS劫持。
[0088]在另外一个实施例中,如图5所示,上述检测客户端DNS劫持的装置,还包括:
[0089]接收模块501,用于在网页认证请求验证成功后,接收返回的字符串;
[0090]第二验证模块502,用于对字符串进行验证;
[0091 ]第二确定模块503,用于在字符串验证失败后,确定客户端发生DNS劫持;
[0092]第三确定模块504,用于在字符串验证成功后,确定客户端未发生DNS劫持。
[0093]在另外一个实施例中,如图6所示,上述检测客户端DNS劫持的装置,还包括:
[0094]提醒模块601,用于在确定客户端发生DNS劫持后,以本地网页形式提醒客户端发生DNS劫持;
[0095]显示模块602,用于在确定客户端未发生DNS劫持后,在客户端中正常显示微端。
[0096]在另外一个实施例中,上述网页认证请求的请求参数包括:用户ID、时间戳和密钥;上述第一验证模块,用于对用户ID、时间戳和密钥的组合进行MD5加密后的MD5值进行验证。
[0097]在另外一个实施例中,如图7所示,第二验证模块502,包括:
[0098]获取单元5021,用于获取预设字符串的MD5值;
[0099]计算单元5022,用于根据返回的字符串中的用户ID、时间戳结合密钥计算对应的MD5 值;
[0100]比较单元5023,用于比较预设字符串的MD5值与计算出的MD5值是否相同;
[0101]确定单元5024,用于在比较单元比较出的MD5值相同后,确定字符串验证通过;否贝IJ,确定字符串验证失败。
[0102]本发明实施例提供的检测客户端DNS劫持的装置,在检测到客户端发生登录后,通过获取模块获取客户端发送的网页认证请求,网页认证请求的请求参数依据加密协议进行设置;通过第一验证模块对网页认证请求的请求参数进行验证;通过第一确定模块在第一验证模块验证失败后,确定客户端发生DNS劫持。该检测客户端DNS劫持的装置,检测成本低廉,处理效率高,且检测结果准确。
[0103]上述实施例提供的方法和装置属于同一发明构思,装置中各模块、单元的功能及实现过程可参照方法实施例中的描述,这里不再赘述。
[0104]本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0105]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种检测客户端DNS劫持的方法,其特征在于,包括: 在检测到客户端发生登录后,获取所述客户端发送的网页认证请求,所述网页认证请求的请求参数依据加密协议进行设置; 对所述网页认证请求的请求参数进行验证; 如果验证失败,则确定所述客户端发生DNS劫持。2.根据权利要求1所述的方法,其特征在于,如果验证成功,所述方法还包括: 接收返回的字符串; 对所述字符串进行验证; 如果所述字符串验证失败,则确定所述客户端发生DNS劫持; 如果所述字符串验证成功,则确定所述客户端未发生DNS劫持。3.根据权利要求2所述的方法,其特征在于,所述方法还包括: 在确定所述客户端发生DNS劫持后,以本地网页形式提醒所述客户端发生DNS劫持; 在确定所述客户端未发生DNS劫持后,在所述客户端中正常显示微端。4.根据权利要求1所述的方法,其特征在于,所述网页认证请求的请求参数包括:用户ID、时间戳和密钥,所述对所述网页认证请求的请求参数进行验证,包括: 对所述用户ID、时间戳和密钥的组合进行MD5加密后的MD5值进行验证。5.根据权利要求2所述的方法,其特征在于,所述对所述字符串进行验证,包括: 获取预设字符串的MD5值; 根据返回的字符串中的用户ID、时间戳结合密钥计算对应的MD5值; 比较预设字符串的MD5值与计算出的MD5值是否相同,如果是,则确定字符串验证通过;否则,确定字符串验证失败。6.一种检测客户端DNS劫持的装置,其特征在于,包括: 获取模块,用于在检测到客户端发生登录后,获取所述客户端发送的网页认证请求,所述网页认证请求的请求参数依据加密协议进行设置; 第一验证模块,用于对所述网页认证请求的请求参数进行验证; 第一确定模块,用于在所述网页认证请求的请求参数验证失败后,确定所述客户端发生DNS劫持。7.根据权利要求6所述的装置,其特征在于,所述装置还包括: 接收模块,用于在网页认证请求验证成功后,接收返回的字符串; 第二验证模块,用于对所述字符串进行验证; 第二确定模块,用于在所述字符串验证失败后,确定所述客户端发生DNS劫持; 第三确定模块,用于在所述字符串验证成功后,确定所述客户端未发生DNS劫持。8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 提醒模块,用于在确定所述客户端发生DNS劫持后,以本地网页形式提醒所述客户端发生DNS劫持; 显示模块,用于在确定所述客户端未发生DNS劫持后,在所述客户端中正常显示微端。9.根据权利要求6所述的装置,其特征在于,所述网页认证请求的请求参数包括:用户ID、时间戳和密钥; 所述第一验证模块,用于对所述用户ID、时间戳和密钥的组合进行MD5加密后的MD5值进行验证。10.根据权利要求7所述的装置,其特征在于,所述第二验证模块,包括: 获取单元,用于获取预设字符串的MD5值; 计算单元,用于根据返回的字符串中的用户ID、时间戳结合密钥计算返回字符串的MD5值; 比较单元,用于比较预设字符串的MD5值与计算出的MD5值是否相同; 确定单元,用于在比较单元比较出的MD5值相同后,确定字符串验证通过;否则,确定字符串验证失败。
【文档编号】H04L29/06GK105933356SQ201610533569
【公开日】2016年9月7日
【申请日】2016年7月7日
【发明人】王光友, 候接力
【申请人】竞技世界(北京)网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1