嗨,我从下拉列表中获取ID值,并将其传递给方法后面的代码,该方法将值传递给sql进行某些操作。
我想知道这是否是正确的方法。
如果不是,那么为什么不这样做,以及有人如何通过sql injection注入它,这将是解决方案。
protected void Drop1_SelectedIndexChanged(object sender, EventArgs e)
{
int abcID;
abcID= Convert.ToInt32(drop1.SelectedItem.Value);
string sc = "SELECT dddd FROM table1 WHERE abcID NOT IN("
+ abcID + ")";
using (SqlDataSource ds = new SqlDataSource(ConnectionString(), sc ))
{
}
最佳答案
由于您在用户发送的值上使用Convert.ToInt32
,因此不会发生SQL注入。无效的值将引发异常。
但是,使用参数化查询通常是一个好习惯。
这样,即使字符串值也将是安全的。
SqlCommand command = new SqlCommand("SELECT dddd FROM table1 WHERE abcID NOT IN(@myID)");
command.Parameters.AddWithValue("@myID", abcID);
关于c# - 这可以成为SQL注入(inject)的受害者吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16517867/