sql="select uname,pwd from uinfo where " sql=sql"uname='"request.form("uname")"'" sql=sql" and pwd='"request.form("pwd")"'" rs.open sql,conn,1,1 if rs.eof or rs.bof then response.write "对不起,错误的用户名/密码!" else response.write "登录成功!" end if
可能已经有读者看出来了这段代码是十分危险的,只要对方知道用户名就 可以登录,你可以在密码框里输入“' or '1'='1”就可以了,其原理很 简单,就是利用了sql查询语句,大家注意,用此方法提交以后的sql语句 变成了:(如果用户名为administrator) select uname,pwd from uinfo where uname='administrator' and pwd='' or '1'='1' 如果用户名administrator存在的话那么这个记录是可以被选出来的,之 后当然就是可以正常登录了。
解决方案:
sql="select uname,pwd from uinfo where " sql=sql"uname='"request.form("uname")"'" rs.open sql,conn,1,1 if rs.eof or rs.bof then response.write "对不起,本站没有此用户!" else if rs.fields("pwd")=trim(request.form("pwd")) then response.write "登录成功!" else response.write "错误的用户名/密码!" end if end if