论文部分内容阅读
Web2.0应用程序以其界面友好、功能丰富、实用性强等特点受到越来越多开发者和使用者的青睐。Web2.0的一个显著特征就是大量计算工作和逻辑处理被放到客户端进行,诸如JavaScript、VBScript等客户端脚本技术的广泛应用,给用户带来方便和易用性的同时,也带来了潜在的安全威胁。其中,跨站脚本攻击(Cross Site Scripting,XSS)是目前Web领域最为严重的安全问题之一。该攻击存在的根本原因是Web应用的安全机制存在缺陷,对于用户的输入没有进行足够的检查和过滤。网络安全公司WebCohort的报告指出,目前80%的Web站点都存在跨站脚本漏洞,甚至很多大型Web站点都曾发生过严重的跨站脚本攻击事件。基于上述背景,本文首先对跨站脚本攻击技术进行了深入研究:详细探讨了反射型、存储型和DOM型三种类型的跨站脚本攻击技术,分析了攻击的触发机制和实现方式,并且针对攻击者伪装攻击脚本用以绕过检测机制的方法进行了总结。在深入研究跨站脚本攻击技术的基础上,本文设计与实现了一种服务器端跨站脚本防御系统。该系统主要由核心引擎、管理模块和数据库三部分组成,其中核心引擎的设计与实现是本文研究重点,由预处理、输入检测、输出处理和日志审计四个模块组成。预处理模块实现SSL解码和输入编码及字符集的归一化,达到解密HTTPS流量与阻止各种变种攻击的目的。输入检测模块首先分解输入数据,然后将分解得到的矢量对象与三层规则进行细粒度匹配,从而发现跨站脚本攻击。输出处理模块可以将非信任内容中的特殊字符进行转义,进一步消除跨站脚本攻击风险,但这种方式在一定程度上会影响用户体验。日志审计模块实时记录所有的异常出错信息,并且通过单向散列函数和消息鉴别码实现日志数据的完整性与一致性保护,便于日后分析与取证。不同的Web站点存在的跨站脚本漏洞会有所区别,但不可能针对每一个站点的情况来设计单独的防御方案,因此需要一种不改变现有的Web代码就能对跨站脚本攻击进行有效防御的方法。为了实现这一目的,本文将设计的跨站脚本防御系统部署在反向代理服务器中,能够拦截客户端与服务器之间所有通信数据并进行检测。实验结果表明,该系统能够帮助Web站点有效地防御反射型、存储型和DOM型跨站脚本攻击,但会增加一定的请求响应时间。最后,传统的跨站脚本防御方法存在一定的局限性:它们只是单纯地对攻击进行防御,而没有彻底修复跨站脚本漏洞。针对这一问题,本文提出了一种跨站脚本漏洞自愈机制,以自动完成检测和修补跨站漏洞的工作,并且详细论述了自愈机制的体系结构、运行流程、检测方式和漏洞信息交换等核心内容。