本来我想用存储过程来做查询的
但最好发现在存储过程中拼合查询语句也没有办法防止用户输入如
‘这样的字符出错
晕顺便问一下,如何能够不用转掉用户的输入如' --> ''
而SQL能够正常查询呢
注:这里主要用来做查询的
可以查我的贴 %|M|%存储过程%谢谢

解决方案 »

  1.   

    哈,高歌~不知道 LZ 怎么拼的SQL,
    只有使用参数,才可以不用手动转化,防止sql 注入
      

  2.   

    http://community.csdn.net/Expert/topic/5581/5581332.xml?temp=.5151026
    这里面的就是我的存储过程
    如何把他改为:
    使用参数,可以不用手动转化,防止sql 注入
      

  3.   

    先收藏,顺便接分
    再留个msn:[email protected]
    以后多多交流
      

  4.   

    amandag(高歌)
     Jinglecat(晓风残月)
     zyciis287()
     你们几位都不睡觉的吗?
      

  5.   

    本来用存储过程的好处之一就是防止用户sql注入,结果lz还是用拼字符串的方法写存储过程。
    本人不会存储过程,但是绝对知道这个很有用。
      

  6.   

    对于 直接的 传递字符 存储过程的 调用 是可以 有效的防止 ' 这样的注入的.ado.net在处理的时候 实际会替换成''但是 对于拼接的字符串楼主还是需要 自己 替换
    比如使用 下面的函数
    /// <summary>
    /// 过滤html
    /// </summary>
    /// <param name="text"></param>
    /// <returns></returns>
    public static string FilterSQL(string text)
    {
    string validSql = "";
    if (text != null)
    {
    text = text.Replace("\"", "&quot;");
    text = text.Replace(";", "");            
    //text = text.Replace("'", "''");
    // text = text.Replace("--", "''--''");
    text = text.Replace("%25", "");
    text = text.Replace("%0a", "");
    text = text.Replace("%22", "");
    text = text.Replace("%27", "");
    text = text.Replace("%5c", "");
    text = text.Replace("%2f", "");
    text = text.Replace("%3c", "");
    text = text.Replace("%3e", "");
    text = text.Replace("%26", ""); text = text.Replace("<", "&lt;");
    text = text.Replace(">", "&gt;");
    validSql = text;
    }
    return validSql;
    }
      

  7.   

    hertcloud(·£孙子兵法£·)  是个会经常用到的方法! 呵呵
      

  8.   

    RE:
    本来用存储过程的好处之一就是防止用户sql注入,结果lz还是用拼字符串的方法写存储过程。
    本人不会存储过程,但是绝对知道这个很有用。
    --------------------------------------------------
    我的就是这个意思
    问的是怎么把我那条复杂的查询语句改成
    非用拼字符串的方法写存储过程
    也就是可以防止用户sql注入要是要用如public static string FilterSQL(string text)
    这样的话那我就接写sql就可以了何必用存储过程呢
    谢谢