利用SQL漏洞强行登录及防范方法

在用户名为空不输入或随便输入用户名,在密码输入框里用 'or''=' 回车就可以进入人家的系统。
典型错误程序如下:
private void login_ok_Click(object sender, System.EventArgs e)
{  
string sqlstr="select * from company_admin where username='"+username.Text+"' and password='"+password.Text+"'";  //  这一句:典型的SQL漏洞
SqlConnection myconn=new SqlConnection(ConfigurationSettings.AppSettings["connstr"]);
SqlCommand mycomm=new SqlCommand(sqlstr,myconn);
try
{
myconn.Open();
SqlDataReader dr;
dr=mycomm.ExecuteReader();
if(dr.Read())
{
Session["username"]=username.Text;
Session["password"]=password.Text;
Session["rights"] = dr["rights"].ToString();
Response.Redirect("index.aspx");
}
else
{
go_wrong.Text="对不起,您的用户名或密码不能为空且需准确输入 !";
}
}
catch(Exception er)
{go_wrong.Text=er.ToString();}
finally{myconn.Close();}
}

///
string sqlstr="select * from company_admin where username='"+username.Text+"' and password='"+password.Text+"'";

这一句:典型的SQL漏洞
可以改写为:
string sqlstr="select * from company_admin where username=@username and password=@password";
或者
用存储过程
另外一般的WEB数据提交到数据时都要经过Replace("'","''")转换
也可以采用参数
sqlcommand cmd=new sqlcommand ("select * from usertable where 用户名
=@user and 密码=@pwd",conn);
cmd.param***.add("@user","用户名");
cmd.param***.add("@pwd","密码");
当然
也可以用MD5加密


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值