如何克服SQL注入
How to overcome SQL Injection
我的部分代码受到了 SQL 注入。下面是代码
public int Insert(string usrtest )
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(conn);
// SqlCommand cmd = new SqlCommand("select * from table where name=@name", con);
SqlDataAdapter adp = new SqlDataAdapter("select * from table where name=@name", con);
con.Open();
adp.SelectCommand.Parameters.AddWithValue("@name", usrtest );
adp.Fill(dt);
SqlCommand cmd1 = new SqlCommand("Update table set Date='" + DateTime.Now + "' where name='" + usrtest + "'", con);
cmd1.ExecuteNonQuery();
con.Close();
}
您似乎已经知道如何使用绑定参数,因为您之前在代码中只做了 4 行。也将它们用于您的第二个陈述。
问题出在以下命令中,您在其中使用了字符串连接:
SqlCommand cmd1 = new SqlCommand("Update Usrtable set password_change_status=1, Date='" + DateTime.Now + "' where Uname='" + txtusr + "'", con);
上面的命令应该像你在上一个命令中所做的那样执行,在那里你使用 Parameters
。
var cmd1 = new SqlCommand("Update Usrtable set password_change_status=1, Date=@Date where Uname=@Uname", con);
cmd1.Parameters.AddWithValue("@Date",DateTime.Now);
cmd1.Parameters.AddWithValue("@Uname",txtusr);
我的部分代码受到了 SQL 注入。下面是代码
public int Insert(string usrtest )
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(conn);
// SqlCommand cmd = new SqlCommand("select * from table where name=@name", con);
SqlDataAdapter adp = new SqlDataAdapter("select * from table where name=@name", con);
con.Open();
adp.SelectCommand.Parameters.AddWithValue("@name", usrtest );
adp.Fill(dt);
SqlCommand cmd1 = new SqlCommand("Update table set Date='" + DateTime.Now + "' where name='" + usrtest + "'", con);
cmd1.ExecuteNonQuery();
con.Close();
}
您似乎已经知道如何使用绑定参数,因为您之前在代码中只做了 4 行。也将它们用于您的第二个陈述。
问题出在以下命令中,您在其中使用了字符串连接:
SqlCommand cmd1 = new SqlCommand("Update Usrtable set password_change_status=1, Date='" + DateTime.Now + "' where Uname='" + txtusr + "'", con);
上面的命令应该像你在上一个命令中所做的那样执行,在那里你使用 Parameters
。
var cmd1 = new SqlCommand("Update Usrtable set password_change_status=1, Date=@Date where Uname=@Uname", con);
cmd1.Parameters.AddWithValue("@Date",DateTime.Now);
cmd1.Parameters.AddWithValue("@Uname",txtusr);