C# winform 防止sql注入

string username = txtUserName.Text.ToString();
string pwd = txtPwd.Text.ToString();

string sql = "select count(*) from zhuce where username='" + username + "' and pwd='" + pwd + "'and type = '" + power.Text + "'";

SqlConnection conn = new SqlConnection(Common.Context.SqlManager.CONN_STRING);
conn.Open();

SqlCommand cmd = new SqlCommand(sql, conn);
int count = Convert.ToInt32(cmd.ExecuteScalar());

conn.Close();
各位大虾上面这个代码怎么能够防止SQL注入?如果是其他代码呢?谢谢给位了,说得好的加分,谢谢给位了
4291727的我就是不知道什么是参数传值
hetongyang的怎么做一个存储过程?string sql=“存储过程名字”;这句应该怎么写,我是初学者,各位见谅
摆渡浮桥的 输入后显示 上下文不存在varchar ,Item缺少USING引用并且找不到可用引用

第1个回答  2010-12-08
唯一的解决办法是字符串过虑, 就算你写了存储过程,其内部原理他基本上是字符串的合并。根本无法从根本上解决SQL注入
唯一行之有效的办就只有一个 那就是 检查字符串里是否有单引号 如果有 把 字符串里的 单引号 全去掉. 如果 值类开 就是检查 or SQL 注入的精髓就是合理使用 单引号和 or 改变 sql 语意 只要你把 字符串中的 这两个东西 干掉就安全了 不过 字符过滤很费时间 尤其是 论坛一类的 需要提交文章的系统
第2个回答  2010-12-08
防止SQL注入,就是你写一个存储过程
在里面调用
不要将SQL语句写在代码里
string sql=“存储过程名字”;
cmd.CommandType = CommandType.StoredProcedure;
第3个回答  推荐于2016-01-11
通过参数传递:
string sql = "select count(*) from zhuce where username=@username and pwd=@pwd and type = @type";
SqlConnection conn = new SqlConnection(Common.Context.SqlManager.CONN_STRING);
conn.Open();

SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@username",SqlDbType.VarChar,30);
cmd.Parameters.Add("@pwd",SqlDbType.VarChar,30);
cmd.Parameters.Add("@type",SqlDbType.VarChar,10);
cmd.Parameters["@username"].Value = username;
cmd.Parameters["@pwd"].Value = pwd;
cmd.Parameters["@type"].Value = power.Text;

int count = Convert.ToInt32(cmd.ExecuteScalar());

conn.Close();本回答被提问者采纳
第4个回答  2010-12-08
改成用参数传值就行了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网