2012-01-02 1 views
1

Я пытаюсь выполнить дополнительную проверку, прежде чем приложение начнет считывать ввод запроса, чтобы закрыть подозрительный запрос на основе заголовков и данных формы или что-то в этом роде.Подтвердить запрос перед Application_BeginRequest?

Возможно ли это?

[Update]

Я сосредоточен в предотвратить нулевой день vunerability, что происходит до того BeginRequest и ins't улова проверки ASP .NET.

Если бы я мог контролировать создание объекта HttpWebRequest, я мог бы обнаружить эту атаку.

[Решение]

Это может быть решена с помощью собственного модуля.

информации о создании собственного модуля, можно найти здесь (с использованием C++): http://learn.iis.net/page.aspx/169/develop-a-native-cc-module-for-iis/

Нулевого дня уязвимость я говорил описана в этом блоге: http://blogs.technet.com/b/srd/archive/2011/12/27/more-information-about-the-december-2011-asp-net-vulnerability.aspx

Я сделал исправление для него (является предварительным выпуском, не подходит для производства) и может быть найден на GitHub: https://github.com/ginx/HashCollisionDetector

Спасибо за помощь.

+0

Похоже, ваше решение по-прежнему используя событие BeginRequest, верно, только из собственного кода вместо управлять? – RickNZ

+0

Я использую его, но проблема, с которой я обращалась, произошла в обработчике ASP.net, вызвав DoS на всех серверах. Собственный обработчик, я получаю необработанный запрос, поэтому проблемы еще не произошло. Microsoft уже исправила ошибку, так что этого больше не происходит. – LawfulHacker

ответ

2

BeginRequest - первое событие в конвейере обработки запросов IIS.

Единственными действиями предварительного запроса, которые происходят до этого события, являются создание экземпляров классов HttpContext, HttpRequest и HttpResponse.

Это также случай, когда событие BeginRequest в некоторых зарегистрированных HttpModules (включая Global.asax) будет запущено перед другими. Однако ASP.NET не дает никаких гарантий в отношении заказа.

0

Вы можете попросить HttpApplication сделать это для вас, установив страницы validateRequest="true" в свой web.config.

В противном случае вы можете попытаться заменить некоторые стандартные модули в конвейере IIS (не рекомендуется, если у вас нет большого количества времени на ваших руках).

Вот некоторые очень хорошие ресурсы:

ASP.NET Application Life Cycle Overview for IIS 7.0

IIS 7 Modules Overview

Customizing IIS 7.0 Roles and Modules

+0

Любые идеи, как я могу заменить эти стандартные модули? Это именно то, что я пытаюсь. К сожалению, validareRequest не совершенен, и я пытаюсь исправить нулевую ценность. – LawfulHacker

+0

У меня нет опыта с этим, но вы видели эту статью MS KB: http://support.microsoft.com/kb/957508? Это может сэкономить массу времени. –

+0

Существует также неплохая информация по этой ссылке: http://learn.iis.net/page.aspx/543/administration-pack/ –