论文部分内容阅读
随着Internet的发展,基于B/S模式的动态网站的应用已经受到社会上各界人士的青睐,但开发人员安全意识的淡薄以及安全防御技术的不成熟,给该类网站带来了很多不安全因素。SQL注入攻击(SQL Injection Attacks)就是众多针对脚本系统的网站攻击中最常见的一种攻击手段,也是危害最大的一种攻击。利用SQL注入攻击,攻击者可以操作网站后台的数据库,导致敏感数据泄露,数据库内容或结构被破坏,甚至攻击者利用某些数据库本身的扩展功能控制服务器操作系统,破坏硬盘中的数据,乃至瘫痪整个操作系统。在目前国内的动态网站中,IIS+ASP+Access或SQL Server已成为构建网站的常用模式,被广泛应用在各种互联网应用中,优点在于代码简单、好用、开发效率高,开发出的网站具有使用简单、实用性强、不会泄露源代码等特点,是Web应用系统开发人员公认的建立Windows平台下动态网站最好的工具。其不足之处在于过分依赖于开发人员,如果服务器设置或程序编写不恰当则可能会导致出现较大的安全漏洞,对网站的安全构成威胁,特别是危害最大的SQL注入漏洞。为降低甚至根除SQL注入漏洞带来的安全威胁,提高网站及系统的安全性,急需研究人员研究设计出一种可以有效防御SQL注入攻击的防御系统。本文首先分析了网站架构和数据传输过程以及SQL和ASP技术,在此基础上详细分析介绍了在IIS+ASP+Access或SQL Server环境下的SQL注入攻击的原理、特点、流程、攻击方法与防御方法;然后采用ISAPI Filter技术简单的实现了对SQL注入攻击的防御;通过分析SQL通用防注入系统和SQL自动防御模型的优点和缺点,本人对其进行改进整合设计了一个新的SQL通用防注入系统。ISAPI Filter位于Web服务器和客户端之间,能够对服务器和客户端之间传输的数据进行过滤,因此,通过配置ISAPI Filter对SQL注入攻击采用的特殊字符和关键字进行过滤,并对一些IP地址对网页的访问权限进行限制,保护.mdb文件不被下载,防暴库攻击,从而达到防御SQL注入攻击的效果。ISAPI Filter是动态库文件,只需在服务器端配置载入这个库文件,无需更改ASP网页文件。网络上流行的SQL通用注入防御系统是ASP网页文件,在访问服务器数据库之前调用此文件,由于其过于追求安全性,而具有一定的误报率,本文对通用SQL注入防御系统进行了改进。缩小通用SQL防注入系统的过滤关键字范围,并添加了Web应用程序中的数据库所使用的名称作为过滤关键字,同时对用户提交的数据中特殊符号进行了过滤转换,对恶意攻击数据库的用户,当攻击次数超过3次则封IP,并在系统中添加了发送邮件和系统声音报警功能,即降低了误报情况,又能让管理员及时发现攻击行为。