C# winform 防止sql注入
发布网友
发布时间:2022-04-10 13:06
我来回答
共4个回答
热心网友
时间:2022-04-10 14:36
唯一的解决办法是字符串过虑, 就算你写了存储过程,其内部原理他基本上是字符串的合并。根本无法从根本上解决SQL注入
唯一行之有效的办就只有一个 那就是 检查字符串里是否有单引号 如果有 把 字符串里的 单引号 全去掉. 如果 值类开 就是检查 or SQL 注入的精髓就是合理使用 单引号和 or 改变 sql 语意 只要你把 字符串中的 这两个东西 干掉就安全了 不过 字符过滤很费时间 尤其是 论坛一类的 需要提交文章的系统
热心网友
时间:2022-04-10 15:54
防止SQL注入,就是你写一个存储过程
在里面调用
不要将SQL语句写在代码里
string sql=“存储过程名字”;
cmd.CommandType = CommandType.StoredProcere;
热心网友
时间:2022-04-10 17:28
通过参数传递:
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();
热心网友
时间:2022-04-10 19:20
改成用参数传值就行了。