У меня возникли проблемы с настройкой правил в URL Rewrite 2.0 с использованием IIS 7. Я работаю над веб-сайтом, который представляет собой комбинацию более современных материалов .NET 4.0, вплоть до классических материалов .ASP. Моя текущая задача — попытаться удалить некоторые определенные символы из пользовательского ввода, чтобы предотвратить атаки XSS.
Я получаю основной синтаксис:
<rule name="Rule Name" stopProcessing="true">
<match url="myPage.asp" />
<conditions>
<add input="" pattern="" />
</conditions>
<action type="" />
</rule>
Я знаю, что мне нужно три шага: 1) Убедитесь, что мы смотрим на сообщение 2) Идентифицируйте любой из нескольких неверных символов с помощью регулярного выражения 3) Продолжите сообщение, удалив эти символы.
Первое, что я считаю, может быть решено следующим образом:
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" />
Что меня расстраивает, так это вторая и третья проблема.
Вторая проблема также является входной, но я застрял, пытаясь найти лучшую переменную {} для ввода. Прямо сейчас у меня есть это:
<add input="{REQUEST_URI}" pattern="[\\\|<>]" />
но я знаю, что {REQUEST_URI} не подходит для этого. Я был на сайте перезаписи URL-адресов (http://www.iis.net/download/urlrewrite) и нашел список серверных переменных IIS 6.0 (http://msdn.microsoft.com/en- us/library/ms524602(v=vs.90).aspx), но я не могу найти хороший список переменных, доступных мне в 7.0 и выше, и что они означают. Это что-то, что кто-то где-то добавил в закладки и может передать?
Третий тоже вызывает у меня вопросы. Прямо сейчас в некоторых других правилах у меня установлено <action type="AbortRequest" />
, но для этого я не собираюсь останавливать запрос, я хочу просто удалить неверные символы и продолжить POST. Настройка пользовательского правила в IIS выглядит многообещающе, но, похоже, он просто хочет перенаправить на URL-адрес, а не делать ничего другого. Это вообще возможно?
Я также должен отметить, что я рассматриваю управляемый модуль IIS в качестве альтернативы, чтобы получить то, что я ищу. Это звучит как лучший путь для кого-то?