当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL注入漏洞入侵的过程及其防范措施

MSSQL
用SQL语句实现替换字符串
mssql查找备注(text,ntext)类型字段为空的方法
MSSQL数据类型及长度限制详细说明
SQL Server下几个危险的扩展存储过程
一些SQL Server存储过程参数及例子
sql高级技巧几个有用的Sql语句
SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
用SQL建立索引的方法步骤
MSsql每天自动备份数据库并每天自动清除log的脚本
mssql无数据库日志文件恢复数据库的方法
SQL Server常用管理命令小结
SQL SERVER性能优化综述(很好的总结,不要错过哦)
sqlserver 游标的简单示例
sqlserver只有MDF文件恢复数据库的方法
在SQL Server启动时自动执行存储过程。
在 SQLSERVER 中快速有条件删除海量数据
阿拉伯数字转大写中文_财务常用sql存储过程
SQL Server存储过程的基础说明
列出SQL Server中具有默认值的所有字段的语句
文本、Excel、Access数据导入SQL Server2000的方法

MSSQL 中的 SQL注入漏洞入侵的过程及其防范措施


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 50 ::
收藏到网摘: n/a

ASP编程门槛很低,新手很容易上路。在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态网站,在功能上,老手能做到的,新手也能够做到。那么新手与老手就没区别了吗?这里面区别可就大了,只不过外行人很难一眼就看出来罢了。在界面的友好性、运行性能以及网站的安全性方面是新手与老手之间区别的三个集中点。而在安全性方面,新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的一些ASP网站稍加扫描,就能发现许多ASP网站存在SQL注入漏洞,教育网里高校内部机构的一些网站这种漏洞就更普遍了,可能这是因为这些网站大都是一些学生做的缘故吧,虽然个个都很聪明,可是毕竟没有经验,而且处于学习中,难免漏洞多多了。本文主要讲讲SQL注入的防范措施,而要明白这些防范措施的用处,须先详细讲解利用SQL注入漏洞入侵的过程。新手们看明白啦。

相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。如这是一个正常的网址http://localhost/lawjia/show.asp?ID=444,将这个网址提交到服务器后,服务器将进行类似Select * from 表名 where 字段="&ID的查询(ID即客户端提交的参数,本例是即444),再将查询结果返回给客户端,如果这里客户端故意提交这么一个网址:http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 'sonybb' 转换为数据类型为 int 的列时发生语法错误。/lawjia/show.asp, 第 47 行

但是别有用心的人从这个出错信息中,可以获得以下信息:该站使用MS_SQL数据库,用ODBC连接,连接帐号名为:sonybb。所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。通常别有用心者的目标是获取网站管理员的帐号和密码。比如当某个人知道网站管理员帐号存在表login中,管理员帐号名为admin,他想知道管理员密码,这里他从客户端接着提交这样一个网址:http://localhost/lawjia/show.asp?ID=444 and (Select password from login where user_name='admin')>0,返回的出错信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)[Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 '!@#*&admin' 转换为数据类型为 int 的列时发生语法错误。/lawjia/show.asp, 第 47 行

你知道吗?上面标红的部分就是管理员帐号admin的密码!虽然很复杂,让人看几遍也记不住的,但它就这样显示在你面前了,这时您就可以用这个帐号和密码接管人家的网站了!这时你可能还会说,如果他不是事先知道管理员帐号存在表login中,而且知道管理员帐号为admin,那他就不可能获得管理员密码。你错了,只要人家愿意多花时间尝试,他将可以获得数据库连接帐号权限内所能获得的所有信息!具体过程请参看网上的这篇文章:SQL注入漏洞全接触。

当然这个过程是很烦琐的而且要花费很多的时间,如果只能以这种手动方式进行SQL注入入侵的话,那么许多存在SQL注入漏洞的ASP网站会安全很多了,不是漏洞不存在了,而是利用这个漏洞入侵的成本太高了。但是如果利用专门的黑客工具来入侵的话,那情况就大大不同了。手动方式进行SQL注入入侵至少需要半天或一天乃至很多天的时间,而利用专门的工具来入侵就只需要几分钟时间了(视网速快慢决定),再利用获得的管理帐号和密码,上传一个从网上下载的ASP后门程序,就轻易获得整个网站的管理权限了,甚至整个服务器的管理权限。最有名的一种SQL注入入侵工具是NBSI 2.0,现在已经出到2.0版本了,不过,