Открытые проблемы перенаправления или манипуляции заголовками из сканирования Fortify на asp.net - PullRequest
3 голосов
/ 21 апреля 2011

Мы сделали сканирование Fortify в нашем приложении ASP.net. Мы обнаружили, что существует много проблем с заголовками. Все проблемы указывают на Response.Redirect (). Пожалуйста, посмотрите на код ниже, где я закодировал параметры. Даже в этом случае приведенный ниже код считается проблемой манипулирования заголовком.

            int iCount = 0;
            foreach (string Name in Request.QueryString.Keys)
            {
                iCount++;
                if (iCount > 1)
                {
                    url += "&";
                }
                url += Name;
                if (Request.Params[Name]!=null)
                {
                    url += "=" + AntiXss.UrlEncode(Request.Params[Name]);
                }
            }
            Response.redirect(Server.UrlPathEncode(page.root) + "\Test.aspx?" + url);

Может ли какой-нибудь орган сообщить мне, что еще нужно изменить, чтобы решить эту проблему?

Ответы [ 2 ]

5 голосов
/ 10 ноября 2012

Снимите часть Server.UrlPathEncode(page.root) и используйте Server.Transfer() вместо Response.Redirect().

Server.Transfer() переводит пользователя на другую страницу того же сайта и практически не рискует случайно направить кого-то на другой сайт.

Response.Redirect() подходит для случаев, когда вы хотите перенаправить кого-то на другой сайт.

Кроме того, Fortify не нравится Request.Params[] из-за его возможной неоднозначности. Осторожный злоумышленник может на некоторых серверах отправить UTF-7 или непечатную версию имени в качестве одной из переменных запроса и позволить имени переменной содержать фактическую инъекцию XSS или перезаписать GET-запрос значение с cookie с тем же именем. Убедитесь, что имя и значение имеют htmlencoded, и рассмотрите возможность использования Request.QueryString[parametername] вместо Request.Params[parametername], чтобы избежать других проблем с Fortify.

Надеюсь, это поможет вам справиться с проблемами фортификации!

0 голосов
/ 10 мая 2011

Похоже, что Fortify воспринимает Name как определенное пользователем и вызывает ошибку «Manupulation». Если это правда, попробуйте использовать предопределенный список, если это возможно.

...