Ошибки маршрута MVC3 / попытки взлома с неверными маршрутами? - PullRequest
0 голосов
/ 30 декабря 2011

В методе 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

Мне любопытно, почему я не вижу текущую страницу как страницу на моем сервере, и если мне нужно добавить дополнительные функции безопасности / что-то пропустил?

Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2012

При попытках взлома потенциальный хакер создаст копию вашего сайта / формы на своем сервере и попытается запустить ваши процессы из этих мест. URL Referrer фиксирует источник исходящего запроса, и вот что появляется.

...