- 第1页:SQL注入攻击及其防范检测技术研究
- 第2页:SQL注入攻击检测方法与防范
3 SQL注入攻击检测方法与防范
3.1 SQL注入攻击检测方法
SQL注入攻击检测分为入侵前的检测和入侵后的检测,入侵前的检测,可以通过手工方式,也可以使用SQL注入工具软件。检测的目的是为预防SQL注入攻击,而对于SQL注入攻击后的检测,主要是针对日志的检测,SQL注入攻击成功后,会在IIS日志和数据库中留下“痕迹”。
(1)数据库检查
使用HDSI、NBSI和Domain等SQL注入攻击软件工具进行SQL注入攻击后,都会在数据库中生成一些临时表。通过查看数据库中最近新建的表的结构和内容,可以判断是否曾经发生过SQL注入攻击。
(2)IIS日志检查
在Web服务器中如果启用了日志记录,则IIS日志会记录访问者的IP地址,访问文件等信息,SQL注入攻击往往会大量访问某一个页面文件(存在SQL注入点的动态网页),日志文件会急剧增加,通过查看日志文件的大小以及日志文件中的内容,也可以判断是否发生过SQL注入攻击。
(3)其它相关信息判断
SQL注入攻击成功后,入侵者往往会添加用户、开放3389远程终端服务以及安装木马后门等,可以通过查看系统管理员账号、远程终端服务器开启情况、系统最近日期产生的一些文件等信息来判断是否发生过入侵。
3.2 一般的SQL注入攻击防范方法
SQL注入攻击防范方法目前已经有很多,总结起来有下面一些:
(1) 在服务端正式处理之前对提交数据的合法性进行检查;
(2) 封装客户端提交信息;
(3) 替换或删除敏感字符/字符串;
(4) 屏蔽出错信息。
(5)不要用字串连接建立SQL查询,而使用SQL变量,因为变量不是可以执行的脚本;
(6)目录最小化权限设置,给静态网页目录和动态网页目录分别设置不同权限,尽量不给写目录权限;
(7)修改或者去掉Web服务器上默认的一些危险命令,例如ftp、cmd、wscript等,需要时再复制到相应目录;
(8)数据敏感信息非常规加密,通过在程序中对口令等敏感信息加密都是采用md5函数进行加密,即密文=md5(明文),本文推荐在原来的加密的基础上增加一些非常规的方式,即在md5加密的基础上附带一些值,如密文=md5(md5(明文)+123456);
4 SQL注入攻击防范模型
4.1SQL注入攻击防范模型
在 前人提出的SQL 注入攻击的检测/防御/备案模型基础上[8][9], 我们进行了检测过程的优化,提出了一种SQL自动防范模型如图1所示,本模型中所有检测都在服务器端进行,首先对IP地址进行检测,如果该IP地址在 SQL注入攻击库中,则禁止该用户的访问,并再次将相关信息添加到SQL注入攻击库中;如果用户是首次访问,则对提交字符进行检测,如果是非法字符,则检 测是否达到规定的访问值,如果达到则禁止用户访问,同时发送邮件给系统管理员。本模型可以防止攻击者穷举攻击并可自由设置攻击次数的上限,一旦到达上限, 系统将自动发送邮件给管理员,管理员收到邮件后可以进行相应的处理,如果条件允许,还可以增加短信发送,增强了SQL注入攻击的自动防范能力。
本模型的最大特点是自动将攻击信息及时的传递给管理员,方便管理员及时做出响应。
图1 SQL注入攻击自动防范模型 |
核心代码如下:
|
4.2使用方法
所有代码均存 入一个文件sqlinject.asp,只需要将该文件包含在需要防范的页面中即可;其中需要包含email.asp和conn.asp二个文件,前者主 要通过Jmail组件来发送email邮件,后者是调用数据库连接,本模型的所采用的数据库是SQL Server 2000。
4.3实际应用效果分析
通 过实际测试,当入侵者在网页提交一些非法字符达到指定次数后,系统会自动屏蔽掉该IP地址对网站的访问并将攻击IP地址、攻击时间、攻击者浏览器版本等信 息写入到数据库中。当本模型存在一个缺陷:当攻击者在一个局域网时,一旦系统自动记录该地址后,其它使用该IP地址的非入侵用户也无法访问网站。本文采取 的折衷办法是,在禁止的网页时留有email地址,如果发现是因为SQL入侵导致某个局域网(企业)不能访问网站,则可以通过删除数据库中禁止访问的IP 地址,即可恢复正常访问。
5 .结束语
本文对SQL注入攻击的方法、原理以及攻击实施过程进行了阐述和总结,并给出了常见的一些SQL注入攻击防范方法。最后给出了一种SQL注入攻击自动防范模型,通过在实际项目中的使用,能够很好的进行主动防范,具有较高的实用价值。