论文部分内容阅读
随着互联网越来越深层次地改变人们的生活,Web安全一直受到各界关注,也是信息安全领域的重要研究课题。SQL注入攻击是Web安全领域历史最悠久、使用最广泛的攻击。虽然已诞生十多年,SQL注入攻击至今仍是Web应用最大的安全威胁之一,在2010年和2013年在OWASP评选的“最严重的十个网络应用安全威胁”排名第一。 针对SQL注入攻击的对抗技术分为SQL注入测试技术和SQL注入防护技术。前者的相关工作主要集中在对Web应用进行源代码审核和渗透测试,不但消耗大量人力,而且容易出现漏报;后者现有的防御技术可以归为代码层防护和平台层防护两类。但是现有的研究在完备性和自动化程度上都有一定的局限性。 本文在动态污点分析技术的基础上,提出了一种基于可信敏感字符标记的SQL注入自动化防护方法。本文的主要工作包括: (1)利用常量字符串提取技术,提出了基于可信敏感字符标记的SQL注入攻击自动化防护方法。区别于传统动态污点分析标记非可信数据,本方法标记对可信数据进行标记,因此不依赖现有的SQL注入攻击规则,减少了由于新的攻击方式引起的漏报,使得防护更加完备。 (2)为了高效区分可信敏感字符和非可信敏感字符,提出了基于UTF-8编码的、利用非规范UTF-8字节进行标记的标记策略。这种标记策略把可信敏感字符转换为不符合UTF-8编码规则的字节,采用这种标记策略的污点分析避免了传统污点分析一般需要影子内存等额外空间的问题,缓解了传统动态污点分析空间损失大的不足。 (3)在PHP平台上设计并实现了在基于可信敏感字符标记、跟踪标记传播和SQL查询点自动转义的防护系统PHPGate。PHPGate在SQL查询的边界点自动转义非可信字符,避免了程序员需要人工处理过滤所有输入或调用参数查询,降低了人为因素引起SQL注入漏洞的危险。 本文在真实环境下对PHPGate进行了实验,对PHPGate的性能损失和防护SQL注入的有效性进行了评估。实验表明PHPGate能有效防护真实的SQL注入漏洞,整体系统在访问真实登陆页面时带来的性能损失在1.28%以下。