论文部分内容阅读
早期的Web给用户提供的功能仅仅是信息的展示,用户能做的只是选择浏览哪些页面,缺少与服务器的交互。随后,在Web2.0概念的广泛影响下,Web站点提供的服务内容和服务方式有了翻天覆地的变化,与早期单一的信息展示相比,如今的网络应用更加注重用户的体验和与用户的交流,用户可以提交输入数据甚至影响网站数据库中的内容。如果对这些用户的输入没有进行足够的检查和过滤,就有可能存在跨站脚本漏洞。跨站漏洞存在的根本原因是对用户输入缺乏充分的检查和过滤,而跨站攻击实现的根本途径是恶意代码经过混淆、伪造等掩饰手段成功躲避过防御系统。针对上述问题,本文开展了以下研发工作:1、实现了一个针对跨站脚本攻击的协同检测和防御系统,从检测和防御两方面入手:检测模块在用户发出页面请求时,通过动态测试方式模拟攻击行为,检测可能存在的跨站漏洞,验证网站脆弱性,完善网站服务器对用户的输入验证;防御模块在服务器端使用分离策略和标记算法将Web页面中的非信任内容进行分离,同时在客户端引入末端限制和混淆代码检测等手段对标记出的非信任内容进行分析和检测,协同完成跨站脚本防御工作。2、现阶段的协同系统对跨站脚本攻击的防御往往过分依赖服务器端,客户端做的工作有限,这造成了服务器端系统开销巨大而客户端资源闲置的局面。本系统对模板引擎进行了改进,服务器端在整个防御体系中只负责非信任内容的分离,而页面的生成和非信任内容的检测工作都在客户端完成,这样就减轻了服务器和网络带宽的压力。另外,对于跨站漏洞的检测工作,一般的检测手段普遍存在针对性不强,漏检率过高的情况。本系统对Fuzzing技术进行了升级改进:从实际网络中引入原始测试用例;扩展HTML、CSS和JS为测试用例的语句元素,改进后的测试方法,生成的测试用例针对性很强,效率更高。3、本文实现的协同检测和防御系统,借鉴分布式系统思想,解放了服务器,依靠数量巨大的客户群和服务器共同完成跨站脚本攻击的检测和防御工作。经过架设的虚拟网络环境的实验验证,本系统在保证对存储型、反射型和DOM(文档对象模型)型跨站脚本攻击有效检测和防御的同时,减小了服务器端和网络带宽压力,客户端性能开销也较低,造成的延迟仅为0.2秒。