文档介绍:sql注入检测Web环境下SQL注入攻击的检测与防御2009年05月22日星期五23:42摘要:简要介绍了SQL注入式攻击的原理。在前人提出的“对用户输入信息实施过滤”的技术基础上,建立了一个针对SQL注入攻击的检测/防御/备案通用模型。该模型在客户端和服务器端设置两级检查。对于一般性用户误操作和低等级恶意攻击,客户端的检查将自动做出反应;考虑到客户端检查有可能被有经验的攻击者绕开,特在服务器端设定二级检查。在文中还提出了对高等级恶意攻击的自动备案技术,并给出了相应代码。关键词:系统安全;SQLServer;SQL注入攻击;IDS检测;DDL模型互联网上的安全问题越来越严重,入侵检测(IDS)也因而显得尤为必要。MSSQLServer作为数据库市场的主要产品之一,研究针对他的SQL攻击处理方案,建立一个通用的SQL注入攻击防御、检测、备案模型,对于加强安全建设具有积极的意义。1、SQL注入攻击简介SQL注入攻击源于英文“SQLInjectionAttack”。目前还没有看到一种标准的定义,常见的是对这种攻击形式、特点的描述。微软技术中心从2个方面进行了描述:(1)脚本注入式的攻击。(2)恶意用户输入用来影响被执行的SQL脚本。StephenKost给出了这种攻击形式的另一个特征,“从一个数据库获得未经授权的访问和直接检索”。SQL注入攻击就其本质而言,他利用的工具是SQL的语法,针对的是应用程序开发者编程过程中的漏洞。“当攻击者能够操作数据,往应用程序中插入一些SQL语句时,SQL注入攻击就发生了”。由于SQL注入攻击利用的是SQL语法,使得这种攻击具有广泛性。理论上说,对于所有基于SQL语言标准的数据库软件都是有效的,包括MSSQLServer,Oracle,DB2,Sybase,MySQL等。当然,各种软件有自身的特点,最终的攻击代码可能不尽相同。SQL注入攻击的原理相对简单,易于掌握和实施,上连接有数目惊人的数据库系统(仅在中国,截至2003年3月的统计就有82900多个),在过去的几年里,SQL攻击的数量一直在增长。2、,前人做过大量的工作,提出的解决方案包括:(1)封装客户端提交信息。(2)替换或删除敏感字符/字符串。(3)屏蔽出错信息以及。(4)在服务端正式处理之前对提交数据的合法性进行检查等。方案(1)的做法需要RDBMS的支持,目前只有Oracle采用该技术;方案(2)是一种不完全的解决措施,举例来说明他的弱点,当客户端的输入为“„ccmdmcmdd„”时,在对敏感字符串“cmd”替换删除以后,剩下的字符正好是“„cmd„”;方案(3)的实质是在服务端处理完毕之后进行补救,攻击已经发生,只是阻止攻击者知道攻击的结果;方案(4)被多数的研究者认为是最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作。方案(4)与(2)的区别在于,方案(4)一旦检测到敏感字符/字符串,针对数据库的操作即行中止,而方案(2)是对有问题的客户端输入做出补救,不中止程序后续操作。方案(2)虽然在一定程度上有效,但有“治标不治本”的嫌疑,新的攻击方式正在被不断发现,只要允许服务端程序使用这些提交信息,就总有受到攻击的可能。因此,本文中针对SQL注入攻击的检