.NET防SQL注入方法 适用于存储过程

SQL语句

利用SqlCommand传参数的方法:

string strSQL="Select * FROM [user] Where user_id=@id";

SqlCommand cmd = new SqlCommand();

cmd.CommandText = strSQL;

cmd.Parameters.Add("@id",SqlDbType.VarChar,50).Value=Request["id"].ToString();

过滤禁止运行法:

          ///



          /// 过滤SQL语句,防止注入

          ///


          ///

          /// 0 - 没有注入, 1 - 有注入

          public int filterSql(string sql)

          {

              int srcLen, decLen = 0;

              sql= sql.ToLower().Trim();

              srcLen = sql.Length;

              sql= sql.Replace("exec", "");

              sql= sql.Replace("delete", "");

              sql= sql.Replace("master", "");

              sql= sql.Replace("truncate", "");

              sql= sql.Replace("declare", "");

              sql= sql.Replace("create", "");

              sql= sql.Replace("xp_", "no");

              decLen = sql.Length;

              if (srcLen == decLen) return 0; else return 1;       

          }

存储过程

因为在存储过程中就可以设置变量的类型,所以也无需对数据做任何操作

你可能感兴趣的:(数据处理(数据库相关))