Использование ValidateRequest="true" с HttpHandlers

У меня есть обработчик HTTP, настроенный в разделе HttpHandlers моего web.config следующим образом:

<add path="myNamespace.myHandler.axd" verb="*" type="myNamespace.myHandler, myNamespace" validate="false"/>

Сканирование PCI выявило уязвимость в этом обработчике, которая открывает его для атак XSS. По сути, вы можете передать тег через строку запроса, и httphandler выгружает тег прямо в ответ в необработанном формате - ой!

У меня нет доступа к исходному коду для этого обработчика, поэтому я пытался закрыть эту уязвимость, используя asp.net со следующим тегом:

<location path="myNamespace.myHandler.axd">
    <system.web>
        <pages validateRequest="true">
        </pages>
    </system.web>
</location>

Это, однако, не работает. Строка запроса не проверяется, а теги все еще проходят.

Я использую IIS7 с asp.net 3.5.

Кто-нибудь может помочь?

Ура, Пэт

1 ответ

Насколько я знаю, в asp.net 3.5 нет простого способа включить проверку запросов для универсального обработчика http с использованием параметров конфигурации. Однако в.net 1.1 были введены некоторые методы проверки, которые, как я считаю (не уверен на 100%), являются теми же критериями, которые использовались при проверке запросов по умолчанию.

В 4.0 введена стандартная проверка запросов по всем направлениям с возможностью вернуться к настройкам 2.0.

На мой взгляд, у вас есть два варианта:

  • ручная обработка проверки где-то в коде
  • обновить до.net 4.0 и получить преимущество от проверки запросов по умолчанию
Другие вопросы по тегам