определен знак в url причинява грешка 500

След извършване на сканиране за сигурност на уебсайта, тези два знака ‹a могат да причинят 500

http://domain.com/default.aspx?‹a

Грешката се обработва в Application_Error за пренасочване към страницата error.aspx.

Application_Error()  
{  
 Response.Redirect("/error.aspx?asperrorpath=" + Context.Request.RawUrl);  
}

Но RawUrl не се показва само като стойност за параметъра asperrorpath, пренасочването ще причини още 500 и ще се получи безкраен цикъл на пренасочване.

Единственото решение, което имам, за да избегна цикъла на пренасочване, е да кодирам RawUrl, но ние искаме да видим истинския URL адрес, който потребителят е поискал, кодирането може да доведе до загуба на информация. Имате ли друго решение?

Благодаря


person William    schedule 24.05.2012    source източник


Отговори (1)


Не съм сигурен дали това ще послужи на вашата цел. Може би можете да ги замените

Application_Error()  
{  
   Response.Redirect("/error.aspx?asperrorpath=" + String.Replace(Context.Request.RawUrl,"<a","^^$$^^");  
}

Така че, ако видите този модел, можете да приемете, че е "‹ a"... изберете вашата комбинация, така че да не се появи иначе.

person The King    schedule 24.05.2012
comment
Проблемът е, че не само ‹a може да причини 500, може да има и друг възможен знак, за който не знам. Предполагам, че единственият начин е да кодирате целия RawUrl. - person William; 24.05.2012