关于怎么防止SQL注入

 有一天偶开了个帖子,关于怎么防sql注入 ,最后很感谢各位朋友的鼎力相助,我总结如下!

1、大家都很推荐的参数化!具体我以更新一条数据为例,包括用存储过程啥的都是这个意思!!

   

                /// <summary>
		/// 更新一条数据
		/// </summary>
		public bool Update(Ost.Model.P_Product model)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("update P_Product set ");
			strSql.Append("CategoryId=@CategoryId,");
			strSql.Append("BrandId=@BrandId,");
			strSql.Append("Name=@Name,");
			strSql.Append("Descn=@Descn,");
			strSql.Append("Image=@Image,");
			strSql.Append("ImageSmall=@ImageSmall,");
			strSql.Append("Price=@Price,");
			strSql.Append("VipPrice=@VipPrice,");
			strSql.Append("Cheapness=@Cheapness");
			strSql.Append(" where ID=@ID");
			SqlParameter[] parameters = {
					new SqlParameter("@CategoryId", SqlDbType.VarChar,20),
					new SqlParameter("@BrandId", SqlDbType.VarChar,20),
					new SqlParameter("@Name", SqlDbType.VarChar,80),
					new SqlParameter("@Descn", SqlDbType.Text),
					new SqlParameter("@Image", SqlDbType.VarChar,80),
					new SqlParameter("@ImageSmall", SqlDbType.VarChar,80),
					new SqlParameter("@Price", SqlDbType.Decimal,9),
					new SqlParameter("@VipPrice", SqlDbType.Decimal,9),
					new SqlParameter("@Cheapness", SqlDbType.Int,4),
					new SqlParameter("@ID", SqlDbType.Int,4),
					new SqlParameter("@ProductId", SqlDbType.VarChar,20)};
			parameters[0].Value = model.CategoryId;
			parameters[1].Value = model.BrandId;
			parameters[2].Value = model.Name;
			parameters[3].Value = model.Descn;
			parameters[4].Value = model.Image;
			parameters[5].Value = model.ImageSmall;
			parameters[6].Value = model.Price;
			parameters[7].Value = model.VipPrice;
			parameters[8].Value = model.Cheapness;
			parameters[9].Value = model.ID;
			parameters[10].Value = model.ProductId;

			int rows=DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}

2、过滤字符!

     我觉的这个也很重要,一些关键字直接给他过滤掉,比如drop 、datebase、delete,and  等一些关键字,写个方法直接过滤掉~!

    把单引号替换成两个单引号!数值型要强制转换!!!

3、利用Entity Framwork ,LINQ  2者配合也能有效防注!

4、关闭服务器返回提示错误。有些人是会根据你的提示错误判断你的表名,数据库名的,服务器返回提示关掉就可以避免这些问题了!

5、也有人说买防火墙!!! 这就不是coder的责任了~~

       


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值