c#中的代码bug



这段代码的缺点是什么:

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=.sqlExpress;Initial Catalog=Learn;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Insert Into tblUser(name,family,tel)Values('" + txtName.Text + "','" + txtFamily.Text + "','" + txtTel.Text + "')";
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();

你的意思是除了SqlConnection不会被处理的事实,以及SqlCommand是以这样一种方式编写的,以邀请SQL注入攻击?

相关XKCD漫画:

http://xkcd.com/327/

一个主要的缺点是你不引用你的字符串或使用参数化查询,所以有人输入O'Brien作为他们的姓氏会得到一个异常。

当然,这也意味着有人可以在文本框中输入任意SQL,然后让你为他们执行。这是不好的。

与安全编码相关....

你的代码容易受到SQL注入攻击,因为你直接使用txtName。代码中的文本形成查询。应该使用参数化查询。此外,您应该在使用txtName.txt之前验证它。

最新更新