近期,菜鸟的网站被SQL语句注入攻击,在网站数据库里用网站帐号建立了一个临时表,且表里列出了D盘文件夹
请问,这是用什么方法进行攻击的;如何解决。
请大家帮帮忙。感谢!

解决方案 »

  1.   

    有输入表单的地方,屏蔽Sql 语句
    可使用存储过程来做,也可以使用UBB进行字符替换,
    还可以自己进行简单的替换,
    比如查询语句
    select * from XXX where user='"+user+"' and pwd='"+pwd+"'
    可以改成
    select * from XXX where user='"+user.Replace("'","''").Replace("-","")....+"' and pwd='"+pwd.Replace("'","''").Replace("-","")....+"+"'
      

  2.   

    bool CheckParams(params object[] args)
    {
        string[] Lawlesses={"=","'"};
        if(Lawlesses==null||Lawlesses.Length<=0)return true;
        string str_Regex=".*[";
        for(int i=0;i< Lawlesses.Length-1;i++)
            str_Regex+=Lawlesses[i]+"|";
        str_Regex+=Lawlesses[Lawlesses.Length-1]+"].*";
        //
        foreach(object arg in args)
        {
            if(arg is string)//如果是字符串,直接检查
            {
                if(Regex.Matches(arg.ToString(),str_Regex).Count>0)
                return false;
            }
            else if(arg is ICollection 
            {
                foreach(object obj in (ICollection)arg)
                {
                    if(obj is string)
                    {
                        if(Regex.Matches(obj.ToString(),str_Regex).Count>0)
                        return false;
                    }
                }
            }
        }
        return true;
    }
      

  3.   

    详见 : C# 检查字符串,防SQL注入攻击   
    http://dev.csdn.net/article/31/31810.shtm
      

  4.   

    如果是asp的 可以这样搞
    http://www.enet.com.cn/article/2005/0301/A20050301394234.shtml
    http://www.yesky.com/225/1930725.shtml
      

  5.   

    直接在WEB。CONFIG文件中屏蔽错误信息就行了
    看不了错误信息,SQL就没发注入了
      

  6.   

    我以前也是用sql注入 
    搞定了一婚介网站的后台
    嘿嘿 不过我没有黑它
      

  7.   

    这两个方法可以保你安全public static string sqlEncode(string Str)
    {
    if(Str!=null)
    {
    Str = Str.Replace(((char)34).ToString(), "&quot;");
    Str = Str.Replace(((char)39).ToString(), "&#39;");
    }
    return(Str);
    }public static string sqlDecode(string Str)
    {
    if(Str!=null)
    {
    Str = Str.Replace("&quot;", ((char)34).ToString());
    Str = Str.Replace("&#39;", ((char)39).ToString());
    }
    return(Str);
    }
      

  8.   

    public string SqlFilter(string Contents)
    {
    Contents = Regex.Replace(Contents, "exec|insert|select|delete|'|update|chr|mid|master|truncate|char|declare", " ", RegexOptions.IgnoreCase);
    return Contents;
    }
      

  9.   

    用存储过程不是可以防范SQL注入攻击吗?