这里使用参数化的方法解决SQL注入问题;
以C#语言Winform防SQl注入做用户登录为例子
try
{
string strconn = ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
SqlConnection conn = new SqlConnection(strconn);
conn.Open();
//解决SQL注入问题,使用参数化
string sql = "select count(*) from Table_user where id=@Id and pass=@Pass";
SqlCommand cmd = new SqlCommand(sql, conn);
//给参数复制
cmd.Parameters.AddWithValue("@Id", textBox1.Text);
cmd.Parameters.AddWithValue("@Pass", textBox2.Text);
int res = (int)cmd.ExecuteScalar();
if (res !=0)
{
MessageBox.Show("ok");
}
else
{
MessageBox.Show("error");
}
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("error");
MessageBox.Show(ex.Message.ToString() + "失败");
}
结果图:
以:账号为“ s’ or 1=1 --” 为例
密码乱打;