一种针对浏览器缓存投毒的防御方法及系统技术方案

技术编号:19186605 阅读:24 留言:0更新日期:2018-10-17 02:18
本发明专利技术提出的一种针对浏览器缓存投毒的防御方法,包括以下步骤:当通过检测发现浏览器向服务器发送请求页面,并调用本地的缓存控制关键函数时,拦截该缓存控制关键函数;根据缓存控制关键函数获取该请求页面中所有未缓存过期的JavaScript文件,并对JavaScript文件进行哈希值计算;根据计算结果校验JavaScript文件是否被篡改,如是,则将其缓存时间调整至早于当前时间。通过客户端和服务器的交互验证来实现,可以在不影响用户体验的同时,有效防御浏览器缓存投毒攻击,保护用户个人信息安全。同时提供实现上述方法的系统。

A defense method and system for browser cache poisoning

A defense method against browser cache poisoning is proposed, which comprises the following steps: when the browser sends a request page to the server through detection and discovery, and calls the local cache control key function, intercepting the cache control key function; obtaining all the request pages according to the cache control key function Uncached expired JavaScript files, and the JavaScript file hash value calculation; based on the calculation results to verify whether the JavaScript file has been tampered with, if so, its cache time is adjusted to earlier than the current time. Through the interactive verification between client and server, it can effectively defend against browser cache poisoning attack and protect user personal information security without affecting user experience. At the same time, a system for realizing the above method is provided.

【技术实现步骤摘要】
一种针对浏览器缓存投毒的防御方法及系统
本专利技术涉及计算机网络安全领域,用于对抗利用浏览器缓存机制实施的缓存投毒攻击,更具体地,是一种针对浏览器缓存投毒的检测方法及系统。
技术介绍
浏览器缓存投毒是指攻击者利用中间人等攻击手段将恶意JavaScript脚本植入到客户端浏览器缓存中,在缓存不被清除的前提下,用户每次访问网页,将会加载恶意JavaScript脚本,进而达到窃取用户账号密码、浏览记录,劫持、篡改流量等目的,严重威胁到用户个人信息安全。浏览器缓存机制的设计初衷是让浏览器将一些静态资源(如:图片、CCS、JavaScript文件等)存储在本地,从而减少网络延迟,降低Web服务器的负载,提升用户体验。其主要实现方式是通过HTTP协议与服务器进行缓存资源的协商与校验,服务器可在HTTP响应头中设置Expires、Cache-Control属性的值来控制资源的有效时间,设置Last-Modified、Etag属性的值来判断资源的版本。在有效时间内,浏览器可以直接从本地缓存中获取该资源,而不需要再向服务器发送请求。然而,浏览器缓存机制也为攻击者提供了机会,通过中间人等手段,攻击者可以用恶意的JavaScript脚本替换原始资源,并设置长久的缓存时间,使得恶意JavaScript脚本能驻留在浏览器缓存之中。JavaScript主要作为客户端脚本语言在客户端的浏览器上运行,能为网页添加各式各样的动态功能,增加交互性,为用户提供更流畅美观的浏览效果。随着浏览器技术的不断完善,以及Ajax、HTML5等Web技术的迅速发展,JavaScript得到了广泛应用,并可以调用许多系统功能,比如操作本地文件、操作图片、调用摄像头和麦克风等等,甚至可以用来进行服务器端的开发(例如Node.js)。JavaScript脚本可以直接嵌入到HTML页面里,也可以通过外部引用的方式,将已存在的JavaScript脚本路径写入到页面,在访问页面的同时向服务器请求加载这些脚本资源。通常,为了提升服务器响应速度,这些外部引用的JavaScript脚本会在一定时效内缓存到本地。因此,当缓存的JavaScript脚本被攻击者替换为恶意代码,甚至实现了跨站点共享,并在每次访问网页的时候被加载执行时,用户的个人信息安全将变得荡然无存。目前,浏览器缓存投毒的防御方法主要基于客户端和服务器。对于客户端来说,一方面,可以通过浏览器的相关设置来定时清除浏览器缓存;另一方面,如果同一网页进行再次访问时,可以进行刷新或者强制刷新。当客户端进行F5刷新时,缓存有效时间将不再生效,服务器会重新验证资源的完整性,并判断是否需要重新加载资源;当客户端进行强制刷新时,浏览器不会使用缓存资源,而会向服务器重新请求资源。基于客户端的防御方法需要用户具有较高的安全意识,并且影响到用户体验。对于服务器来说,可以采取隔离缓存文件、URL随机化的方法,来防止客户端直接从缓存中读取页面信息,但这又势必会影响到响应速度,违背了浏览器缓存的初衷。现有的防御方法都不同程度的存在问题,尤其是无法在保护用户个人信息的同时,兼顾用户体验。
技术实现思路
为解决上述问题,本专利技术提出的一种针对浏览器缓存投毒的防御方法及系统,通过客户端和服务器的交互验证来实现,可以在不影响用户体验的同时,有效防御浏览器缓存投毒攻击,保护用户个人信息安全。为达到上述目的,本专利技术采用具体技术方案是:一种针对浏览器缓存投毒的防御方法,包括以下步骤:当通过检测发现浏览器向服务器发送请求页面,并调用本地的缓存控制关键函数时,拦截该缓存控制关键函数;根据缓存控制关键函数获取该请求页面中所有未缓存过期的JavaScript文件,并对JavaScript文件进行哈希值计算;根据计算结果校验JavaScript文件是否被篡改,如是,则将其缓存时间调整至早于当前时间。进一步地,根据计算结果校验JavaScript文件是否被篡改包括:将JavaScript文件名与其哈希值组成的JSON数据;查找与JavaScript文件名对应的存储在本地的哈希值,将JSON数据中的哈希值与本地的哈希值进行比对,并生成校验值对,表示文件是否被篡改。进一步地,所述哈希值计算选用常用Hash算法,比如MD5、SHA等,但不限于此。进一步地,如JSON数据中的哈希值与本地的哈希值不一致,则生成{“文件名”:“Fail”}校验值对;若两者一致,则生成{“文件名”:“Success”}。一种针对浏览器缓存投毒的防御系统,包括:部署在客户端浏览器上的Hook模块,散列值生成模块及缓存更新模块;用以实现客户端与服务器数据传输的数据传输模块,部署在服务器上缓存校验模块;其中,所述Hook模块用以当通过检测发现浏览器向服务器发送请求页面,并调用本地的缓存控制关键函数时,拦截该缓存控制关键函数;所述散列值生成模块用以根据缓存控制关键函数获取该请求页面中所有未缓存过期的JavaScript文件,并对JavaScript文件进行哈希值计算;所述缓存校验模块根据计算结果校验JavaScript文件是否被篡改;如文件被篡改,所述缓存更新模块用以将JavaScript文件的缓存时间调整至早于当前时间。进一步地,所述缓存校验模块根据计算结果校验JavaScript文件是否被篡改包括:将JavaScript文件名与其哈希值组成的JSON数据;查找与JavaScript文件名对应的存储在本地的哈希值,将JSON数据中的哈希值与本地的哈希值进行比对,并生成校验值对,表示文件是否被篡改。进一步地,如JSON数据中的哈希值与本地的哈希值不一致,则所述缓存校验模块生成并向服务器发送{“文件名”:“Fail”}校验值对;若两者一致,则所述缓存校验模块生成并向服务器发送{“文件名”:“Success”}。进一步地,所述散列值生成模块进行哈希值计算选用常用Hash算法,比如MD5、SHA等,但不限于此。通过采取上述技术方案,与现有技术相比,本专利技术具有以下几点优势:首先,缓存校验过程中使用哈希值校验所消耗的时间单位为ms级,在网络环境良好的情况下,缓存校验过程不会让客户端察觉,可以在不影响客户端体验的同时,有效的防御浏览器缓存投毒攻击。并且,利用文件哈希值,能够快速并可靠的验证缓存文件的真实性。综上,本专利技术通过采用了客户端与服务器交互验证的方法,通过计算并比对缓存文件哈希值来判断缓存文件的真实性,同时根据校验结果,对可疑缓存文件进行强制刷新,从而保护客户端的个人信息安全。附图说明图1是本专利技术一实施例中针对浏览器缓存投毒防御系统的总括流程示意图。图2是本专利技术一实施例中缓存探针构成示意图。图3是本专利技术一实施例中缓存校验插件构成示意图。图4是本专利技术一实施例中系统建立和总括流程图。图5是本专利技术一实施例中散列值生成模块示意图。图6是本专利技术一实施例中缓存校验模块示意图。图7是本专利技术一实施例中缓存更新模块示意图。具体实施方式为了使本
的人员更好地理解本专利技术实施例中的技术方案,并使本专利技术的目的、特征和优点能够更加明显易懂,下面结合附图和事例对本专利技术中技术核心作进一步详细的说明。在本专利技术中,设计了一套可靠而有效的浏览器缓存投毒防御系统,能够有效解决上述所存在的问题,所述系统包括如下:如图1所示,针对浏览器本文档来自技高网
...

【技术保护点】
1.一种针对浏览器缓存投毒的防御方法,包括以下步骤:当通过检测发现浏览器向服务器发送请求页面,并调用本地的缓存控制关键函数时,拦截该缓存控制关键函数;根据缓存控制关键函数获取该请求页面中所有未缓存过期的JavaScript文件,并对JavaScript文件进行哈希值计算;根据计算结果校验JavaScript文件是否被篡改,如是,则将其缓存时间调整至早于当前时间。

【技术特征摘要】
1.一种针对浏览器缓存投毒的防御方法,包括以下步骤:当通过检测发现浏览器向服务器发送请求页面,并调用本地的缓存控制关键函数时,拦截该缓存控制关键函数;根据缓存控制关键函数获取该请求页面中所有未缓存过期的JavaScript文件,并对JavaScript文件进行哈希值计算;根据计算结果校验JavaScript文件是否被篡改,如是,则将其缓存时间调整至早于当前时间。2.如权利要求1所述的针对浏览器缓存投毒的防御方法,其特征在于,根据计算结果校验JavaScript文件是否被篡改包括:将JavaScript文件名与其哈希值组成的JSON数据;查找与JavaScript文件名对应的存储在本地的哈希值,将JSON数据中的哈希值与本地的哈希值进行比对,并生成校验值对,表示文件是否被篡改。3.如权利要求1所述的针对浏览器缓存投毒的防御方法,其特征在于,所述哈希值计算选用算法为MD5算法或SHA算法。4.如权利要求1所述的针对浏览器缓存投毒的防御方法,其特征在于,如JSON数据中的哈希值与本地的哈希值不一致,则生成{“文件名”:“Fail”}校验值对;若两者一致,则生成{“文件名”:“Success”}。5.一种针对浏览器缓存投毒的防御系统,包括:部署在客户端浏览器上的Hook模块,散列值生成模块及缓存更新模块;用以实现客户端与服务器数据传输的数据传输模块,部署在服务器上...

【专利技术属性】
技术研发人员:刘井强尹捷刘潮歌刘奇旭赵建军
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1