SQL Server应用程序的高级Sql注入
2009-04-04 13:56:50 来源:WEB开发网这是因为插入的单引号破坏了原来单引号引住的数据,数据库执行到'hn'时失败。如果攻击者这样输入:
Forename: jo'; drop table authors--
Surname:
...authors表就会被删掉,原因过一会再解释。
似乎通过删除用户输入的字符串中的单引号或者通过一些方法避免它们出现可以解决这个问题。诚然如此,但是要实施这个解决方法还有很多的困难。因为首先:不是所有的用户提交的数据都是字符串形式,比如我们的用户输入通过'id'(看上去是个数字)来选择一个用户,我们的查询可能会这样:
select id,forename,surname from authors where id=1234
在这种情况下攻击者可以轻易的在数值输入后面添加SQL语句。在其他SQL方言中,使用着各种分隔符,比如MS Jet DBMS引擎,日期可以用'#'符号来分隔。
其次,避免单引号并不像开始我们想象的那样是必要的解决办法,原因下面讨论。
我们将以Active Server Pages(ASP)登陆页面为例子来详细说明,它访问一个Sql-Server数据库并且验证一个到我们假想的程序的访问。
这是用户填写用户名和密码的表单页面:
〈HTML〉
〈HEAD〉
〈TITLE〉Login Page〈/TITLE〉
〈/HEAD〉
〈BODY bgcolor='000000' text='cccccc'〉
〈FONT Face='tahoma' color='cccccc'〉
〈CENTER〉〈H1〉Login〈/H1〉
〈FORM action='process_login.asp' method=post〉
〈TABLE〉
〈TR〉〈TD〉Username:〈/TD〉〈TD〉〈INPUT type=text name=username size=100%width=100〉〈/INPUT〉〈/TD〉〈/TR〉
〈TR〉〈TD〉Password:〈/TD〉〈TD〉〈INPUT type=password name=password size=100%
width=100〉〈/INPUT〉〈/TD〉〈/TR〉
〈/TABLE〉
〈INPUT type=submit value='Submit'〉 〈INPUT type=reset value='Reset'〉
〈/FORM〉
〈/FONT〉
〈/BODY〉
〈/HTML〉
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接