如何克服SQL注入

时间:2017-04-21 09:37:56

标签: c# sql asp.net sql-injection code-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();
}

2 个答案:

答案 0 :(得分:2)

您似乎已经知道如何使用绑定参数,因为您之前在代码中只执行了4行。也可以将它们用于第二个陈述。

答案 1 :(得分:0)

问题出在以下命令中,您使用字符串连接:

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);