.net学习笔记(二)

SQL注入式攻击之未正确过滤转义字符

例:comm.CommandText="select UserName from[User] where UserName='"+username+"'and Password='"+pwd+"'";

如果username=1'or't'='t'or2='3 则sql语句变成 where username='1'or't'='t'or2='3' and ……则无论password为何值where永远成立,外面就可以操纵数据库了,比如username= a';Drop table users;select * from data where name like '%.就可以从外部删除user表

办法:将要传的值进行参数化

"select UserName from [ User] where username UserName=@username and Password=@pwd";

OledbParameter[] paras= {new OledbParameter("@username",uname),new OledbParameter("@pwd",wd)};

com.parameters.addrange(paras);

object obj= comm.excuteScalar();//返回第一行第一列

if(obj!=Null){ response.redirect("main.html");}

else{ response.write("<script type='text/javascript'>alert('……')</script>");username="";pwd="";username.focus();}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值