为了防止注入,需要对用户输入的一些字符进行过滤.
但是又不想过滤掉英文中的"delete ","update ",因为这些应该是用户可能需要输入的.请问有什么好的过滤办法没有?

解决方案 »

  1.   

    不采用拼接字符串的方式拼接SQL
    用传递参数方式或者是存储过程执行SQL然后对输入项首先进行过滤,这里有一个简单的过滤函数,LZ可以参考下
    public   static   string   CleanString(string   inputString)   
      {   
      StringBuilder   retVal   =   new   StringBuilder();   
        
      if   ((inputString   !=   null)   &&   (inputString   !=   String.Empty))     
      {   
      inputString   =   inputString.Trim();   
        
        
      for   (int   i   =   0;   i   <   inputString.Length;   i++)     
      {   
      switch   (inputString[i])     
      {   
      case   '"':   
      retVal.Append("&quot;");   
      break;   
      case   '<':   
      retVal.Append("&lt;");   
      break;   
      case   '>':   
      retVal.Append("&gt;");   
      break;   
      default:   
      retVal.Append(inputString[i]);   
      break;   
      }   
      }   
        
      retVal.Replace("'",   "   ");   
      }   
        
      return   retVal.ToString();   
      }   
        其具体问题具体分析,你可以就此修改其过滤函数从而满足你的需求哈