刚学asp.net,用的是简单的三层架构开发,如何在asp.net(C#)防SQL注入,请各位大侠帮忙,给出相应代码(如何操作),谢谢!在线等......

解决方案 »

  1.   

    1.使用参数化的sql,不要用字符串拼接sql
    2.对输入进行过滤,去掉关键字,不过这种方法很容易错杀一千。
      

  2.   

    a.Replace("'","'");
    a.Replace(""",""");
    a.Replace("<","&lt;");
    挺多的.
      

  3.   

    // 检查字符串是否全为数字
    public static bool IsNum(string Str)
    {
        bool blResult = true;
        if (Str == "")
            blResult = false;
        else
        {
            foreach (char Char in Str)
            {
                if (!Char.IsNumber(Char))
                {
                    blResult = false;
                    break;
                }
            }
            if (blResult)
                if (int.Parse(Str) == 0)
                    blResult = false;
        }
        return blResult;
    }
    应用:
    string Topicid = Request.QueryString["Topicid"];
    if (!IsNum(Topicid))
        Server.Transfer("Error.aspx?ErrID=404");
    二.如果参数为文本.
    // Html转换
    public static string htmlstr(string chr)
    {
        if(chr==null)
            return "";
        chr=chr.Replace("<","&lt");
        chr=chr.Replace(">","&gt");
        chr=chr.Replace("\n","<br>");
        chr=chr.Replace("\"","&quot;");
        chr=chr.Replace("'","&#39;");
        chr=chr.Replace(" ","&nbsp;");
        chr=chr.Replace("\r","");
        return(chr); 
    }
    应用:string strClass = htmlstr(Request.QueryString["ClassName"]);
      

  4.   

    使用參數或者用存儲過程,不要用字符串拼sql語句
      

  5.   

    这些代码如何加到项目中去,就是加到什么位置,有没相关代码放到web.config中的吗?谢谢!
      

  6.   

    使用參數或者用存儲過程,不要用字符串拼sql語句?
    我是用的存储过程啊