Использование ValidateRequest = "true" с HttpHandlers - PullRequest
1 голос
/ 03 мая 2011

У меня есть 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 Ответ

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

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

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

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

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