大家在写asp.net 的时候都是如何防注入的呢 直接replace 还是用cmd.Parameters来添加参数呢。我现在想搞个函数来实现将接收不同数目的字段然后用cmd.Parameters添加字段来达到防注入的目的。但这用的不是很熟悉,希望谁能给我一个例子 。 谢谢

解决方案 »

  1.   

    使用Command.Parameters添加参数,而不是拼接sql就可以防止sql注入。
      

  2.   

    恩主要是现在Command.Parameters用的不多不怎么熟悉,能给个函数实例吗
      

  3.   

    如果你了解这跟“防注入”没关系、自己成了标题党了,这就够了。然后另开一个帖子,问下一个问题(“Parameters用的不多不怎么熟悉,能给个函数实例吗”)吧!
      

  4.   

    自己学会找资料,找不到再提问,防注入参考http://database.51cto.com/art/201301/377069.htm
      

  5.   

    方法有,
    基本都是存储过程做的,也可以用正则验证。
    这也是比较普遍的问题,
    Command.Parameters 就是ado.net 一个对象。比较简单查查资料就好了。 
      

  6.   

    http://blog.csdn.net/jason_dct/article/details/8545456
      

  7.   

    1.用SQLParameter
    2.自己写个方法过滤SQL关键字
      

  8.   

    无法对任何数据库对象进行参数化查询,
    想要动态接收字段列表,
    只能通过字符串拼接,而且也不能获得参数化查询的执行计划性能优势;不过,sql注入是可以防止的,很简单,你把函数接收的字段列表(不管是UI来的,还是硬编码的)
    统统和数据表的字段列表匹配一下,命中的就接受,否则抛出异常
      

  9.   


            /// <summary>
            /// 执行存储过程,返回受影响的行数(主要用于增、删、改的存储过程)
            /// </summary>
            /// <param name="prcName">存储过程名称</param>
            /// <param name="sp">受影响的行数</param>
            /// <returns></returns>
            public static int GetNonQuery(string prcName, SqlParameter[] sp)
            {
                SqlCommand cmd;            using (SqlConnection cn = new SqlConnection(strcon))
                {
                    cn.Open();
                    cmd = new SqlCommand(prcName, cn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    foreach (SqlParameter s in sp)
                    {
                        cmd.Parameters.Add(s);
                    }                return cmd.ExecuteNonQuery();
                }
            }        public int DeleteAdmin(adminModle info)
            {
                string ProName = "delete_admin";//存储过程删除管理员
                SqlParameter[] sqlparmeters = { new SqlParameter("@id", SqlDbType.Int)
                                              };
                sqlparmeters[0].Value = info.Aid1;
                int i = DBhelper.GetNonQuery(ProName, sqlparmeters);
                return i;
            }
      

  10.   

    你想的微软已经帮你做了,楼主看看SqlHelper.cs,里边有你想要的,参数处理那里。。http://www.cnblogs.com/liwuyi/archive/2012/05/16/2505461.html