Как остановить ошибку 500 .net, созданную при вызове страницы с ошибкой 500

Вот вам интересное.

У меня есть собственная настройка 500.aspx, которая вызывается, когда в моем приложении возникает ошибка 500. 500.aspx также отправляет мне электронное письмо с подробностями ошибки.

Я заметил одну небольшую проблему.

При попытке атаки xss на сам 500.aspx страница 500 не вызывается.

Это явно какая-то логическая проблема.

На самом деле Microsoft сама страдает от той же проблемы.

Посмотреть в действии здесь

http://www.microsoft.com/500.aspx?aspxerrorpath=%3Cscript%3Ealert(%22XSS%22)%3C/script%3E

Как я могу предотвратить это?

Ed


person Ed Bloom    schedule 30.01.2009    source источник


Ответы (3)


Если вы попытаетесь атаковать xss на любой странице, пользовательская страница ошибок не будет вызвана (здесь еще одна случайная страница на Microsoft.com с xss в строке запроса).

Такое поведение, по-видимому, было преднамеренным, чтобы остановить нападение на своем пути. Даже сообщение об ошибке указывает на это поведение:

Проверка запроса обнаружила потенциально опасное входное значение клиента, обработка запроса была прервана.

Единственным обходным путем, по-видимому, является отключение проверки или захват и обработка ошибки в вашем глобальном файле Application_Error.

person Chris Van Opstal    schedule 30.01.2009

Похоже, что после того, как вы определите страницу для обработки определенных (или неспецифических?) ошибок, она больше не будет доступна напрямую через ее URL-адрес, вроде как Web.Config не может быть вызван через браузер.

Я бы настроил 500Test.aspx, который выдает исключение, вызывающее ошибку 500 (и, таким образом, запускает 500.aspx).

Это может сработать.

person Neil N    schedule 30.01.2009

You возможно, стоит подумать об обработке ваших ошибок в событии Application_Error в Global.asax.cs вместо страницы 500.aspx. Вы можете поместить туда код электронной почты, а затем перенаправить пользователя на страницу с ошибкой после того, как вы обработаете ошибку (так мы делаем это там, где я работаю).

person Kevin Tighe    schedule 30.01.2009