使用无效路由的MVC3路由错误/黑客尝试?

时间:2011-12-30 15:06:46

标签: routing asp.net-mvc-3-areas

在我的MVC3应用程序的Global.asax的Application_Error()方法中,我有以下代码发送系统错误通知:

    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

我很好奇为什么我没有看到当前页面与我服务器上的那个页面相同,如果我需要添加其他安全功能/错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

在黑客攻击中,潜在的黑客会在其服务器上创建您的站点/表单的副本,并尝试从这些位置启动您的进程。 URL Referrer捕获原始请求的来源,即出现的内容。