时代的更换,Asp渐渐已经力不从心.PHP,JSP,.NET已经俨然成为主流的今天,在一些小的公司,或是很多小的应用上,Asp仍然具有小巧快捷,易于开发的优势!我的朋友里,就有好些,仍然在研习Asp.昨天晚上去办公室玩,看到好几个新手在学习Asp操作数据库,在此我又想到我做Asp的时候.在此把这篇文章献给新手们!
1.首先,我们看一个例子,现在有一张表user;
里面有3个column,分别是uid int not null auto_increment,uname char(30),upass char(50).
里面有一条记录:
>select * from user;
查询1
uid | uname | upass |
---|---|---|
1 | test | 123456 |
假设现有一个会员登录系统,存取用户用的就是上面的user表,我们在Asp写上这样的程序:
Iname=Request.form("username")
Ipass=Request.form("password")
...
sql="select * from user where uname='"&Iname&"' and upass='"&Ipass&"'"
Set rs=conn.execute sql
if rs.recordcount=1 then ...
这样来判断用户是否,正常登录!
a.现在我们测试一下,把用户名带入test,密码带入123456
查询语句变成 sql=select * from user where uname='test' and upass='123456',运行
查询1
uid | uname | upass |
---|---|---|
1 | test | 123456 |
完全正常!这也是一般的情况,没有问题!
b.下面我们看这样一个情况:
假设我输入 Iname=' or 1 or ', Ipass=' or 1 or ',这里没有用双引号,为了更清楚,直接写的字符串内容!
这样查询语句变为 sql=select * from user where uname='' or 1 or '' and upass='' or 1 or '',运行
查询1
uid | uname | upass |
---|---|---|
1 | test | 123456 |
很奇怪吧,我并不知道用名与密码,可是我们还是查出了内容!
这就是我们今天要说的问题!当用户并没有按照我们的要求,提供正常的用户名密码来完成验证!而是利用数据库的一些内部处理,以及程序的漏洞,非法获取了信息,这就是注入!