用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 数据库开发教程 > Mssql教程 > Mssql数据库安全 > 文章正文
SQL注入攻击的原理及其防范措施
iTbulo.COM 2004-2-1 佚名()

  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 行

[1] [2] [3] 下一页

文章搜索
相关资讯
相关文章 相关下载
关于SQL SERVER的一些安全问题
突破一流信息监控拦截系统进行SQL注射
保护SQL Server 2000的十个步骤
SQL注入实战---利用“dbo”获得SQL管理权限和系统权限
SQL Server应用程序中的高级SQL注入
焦点信息