请问,是否所有执行数据库操作的全部用存储过程就不会出现sql注入式攻击的问题了?

解决方案 »

  1.   

    存储过程和sql注入应该是2个领域(范围)的问题。
    据我了解,net中避免注入的办法是使用SqlParameter参数传入,内部有专门避免注入的机制
    例如:string sql = "UPDATE 用户表 SET 用户权限 = @permission WHERE 用户名=@user SqlParameter parameter = new SqlParameter("@permission",SqlDbType.Binary,buffer.Length);
    parameter.Value = buffer; //将字节数组作为参数传入SQL语句执行
    da.ExecuteNonQuery(sql,parameter,user); 
      

  2.   

    1.没错,所有执行数据库操作的全部用存储过程就不会出现sql注入式攻击的问题
    2.不用存储过程使用sql参数也可以解决sql注入式攻击的问题
      

  3.   

    你首先应该了解注入的原理,其实就是构造特别的参数,使执行的时候按另一个意思执行了.
    然后有一点你要知道,存储过程在接收到参数的时候,不管你参数中用了什么符号,它都会把参数做为一个整体,就像一个变量的值,而不会把这个参数和前面的sql语句连起来形成另一个意思的SQL语句.所以存储过程可以解决你说的注入的问题.但它不是唯一的方法.
      

  4.   

    哈,真的不知道这一点,kgdiwss,明天去要饭的话叫上我啊
      

  5.   

    顶再家100分http://community.csdn.net/Expert/topic/4875/4875937.xml?temp=.993725