2011-12-30 55 views
0

在我MVC3應用在Global.asax的的Application_Error()方法,我有以下的代碼來發送系統錯誤通知:MVC3路由錯誤/黑客攻擊嘗試路由無效?

protected void Application_Error() 
    { 
     string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
     string userAgent = string.Empty; 
     string currentPageUrl = ""; 
     if (Request.ServerVariables["HTTPS"].ToString() == "") 
     { 
      currentPageUrl = Request.ServerVariables["SERVER_PROTOCOL"].ToString().ToLower().Substring(0, 4).ToString() + "://" + Request.ServerVariables["SERVER_NAME"].ToString() + ":" + Request.ServerVariables["SERVER_PORT"].ToString() + Request.ServerVariables["SCRIPT_NAME"].ToString(); 
     } 
     else 
     { 
      currentPageUrl = Request.ServerVariables["SERVER_PROTOCOL"].ToString().ToLower().Substring(0, 5).ToString() + "://" + Request.ServerVariables["SERVER_NAME"].ToString() + ":" + Request.ServerVariables["SERVER_PORT"].ToString() + Request.ServerVariables["SCRIPT_NAME"].ToString(); 
     } 

     if (!string.IsNullOrEmpty(ip)) 
     { 
      string[] ipRange = ip.Split(','); 
      string trueIP = ipRange[0]; 
     } 
     else 
     { 
      ip = Request.ServerVariables["REMOTE_ADDR"]; 
     } 

     string urlReferrer = string.Empty; 

     try 
     { 
      urlReferrer = Request.UrlReferrer.ToString(); 
     } 
     catch (Exception ex) 
     { 
      // do nothing 
     } 

     try 
     { 
      // get user Agent 
      userAgent = System.Net.Dns.GetHostEntry(ip).HostName; //.GetHostByAddress(ip).HostName; 

     } 
     catch (Exception ex) 
     { 
      userAgent = Request.UserAgent; 
      // do nothing 
     } 

     string userDetails = "IP Address: " + ip + 
           "<br /><br />Url Referrer: " + urlReferrer 
           + "<br /><br />Current Page: " + currentPageUrl + "<br /><br />"; 


     try 
     { 
      Exception exception = Server.GetLastError(); 
      Response.Clear(); 


      Controllers.ControllerBaseClass.SendSystemNotification("System Error", userDetails + exception.Message + "<br /><br />" + exception.StackTrace); 


     } 
     catch (Exception ex) 
     { 
      Controllers.ControllerBaseClass.SendSystemNotification("System Error", userDetails + ex.Message + "<br /><br />" + ex.StackTrace); 
     } 

    } 

到目前爲止,它已經成功地發送主要路線錯誤,當嘗試類似的通知:

www.mysite.com/phpadmin/somephpfile.php 

由於沒有與之匹配的路由,因此引發了未找到文件異常。精細。

發送的電子郵件包含當前頁面,這些頁面位於我的網站上,並顯示相關文本,指示'/ [無效路徑] /'的控制器路徑未找到或未實現IController。

但是最近,我已經看到在當前頁面沒有我的服務器上存在的攻擊,

即。 www.etorrent.co.kr:80/js/filter.js

我很好奇爲什麼我沒有在我的服務器上看到當前頁面,如果我需要添加其他安全功能/錯過了某些內容?

謝謝。

+0

這些通常是漫遊器搜索已經妥協的系統。我不認爲你會需要更多的安全性這個用例。沒有什麼能阻止某人輸入無效的URL。但是,你可以找到流量來自哪個IP並禁止它。 – user1231231412 2011-12-30 15:12:26

+0

我想,但我很好奇,爲什麼我看到,作爲當前頁面,而不是推薦人? – ElHaix 2012-01-01 19:17:40

回答

0

在黑客攻擊中,潛在的黑客會在他們的服務器上創建一個站點/表單副本,並嘗試從這些位置啓動您的進程。 URL Referrer捕獲原始請求的來源,這就是出現的內容。