Обновление IIS НЕ обратно совместимо? - PullRequest
1 голос
/ 01 июня 2009

У меня есть серия веб-страниц, которые запускаются на сервере IIS (5.1).

На страницах используется VBscript на страницах .ASP, которые отображают и заполняют внутреннюю базу данных. Эти страницы работали на 100% без ошибок в течение многих лет. Я загрузил инструмент Microsoft (Visual Studio Express), чтобы опробовать его. После загрузки инструмента IIS-сервер начал выдавать ошибки при попытке обновления ASP-страниц. Я думаю, что загрузка пыталась обновить мой веб-сервер. Я удалил Visual Studio Express из моей системы. После многочисленных попыток определить источник ошибки (ПРИМЕЧАНИЕ. Код не был изменен после загрузки инструмента). Я обнаружил, что ошибка возникает, когда символы “<><>” публикуются во время обновления. ПРИМЕЧАНИЕ: я использую <><><><> в динамически создаваемых раскрывающихся списках по умолчанию.

В конечном итоге решение проблемы было простым, я просто изменил значение по умолчанию на “---------“ в раскрывающихся списках против “<><><><><>”

Вопрос в том, почему что-то, что работало на 100% в течение более 9 лет, внезапно перестало работать, и есть ли параметр конфигурации, который я могу изменить, чтобы сервер не выдавал ошибку на символах <>.

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

Ответы [ 2 ]

1 голос
/ 01 июня 2009

Я знаю, что ASP.Net имеет свойство ValidateRequest, которое не позволяет определенным символам в определенных местах предотвращать некоторые хакерские атаки. Это по умолчанию включено. И я считаю, что IIS 7 (возможно, также 6) обрабатывает все сайты как приложение ASP.Net в некоторой степени (использует файл web.config). Это не подтвержденный факт, но у меня появляются файлы web.config, даже когда я тестирую сайт только с файлами .html.

В ASP.Net вы можете изменить свойство ValidateRequest = true (по умолчанию) на ValidateRequest = false в файле web.config. Это, вероятно, остановит проверку на стороне сервера и позволит выполнить настройки по умолчанию.

Добавьте <pages validateRequest="false" /> в разделе system.web web.config.

0 голосов
/ 01 июня 2009

Вероятно, угловые скобки рассматриваются как потенциальные атаки межсайтового скриптинга - по умолчанию в наши дни asp.net (я знаю, что вы используете ASP, а не ASP.NET) выдает исключение о «потенциально опасной обратной передаче», Вы отправляете строку с угловыми скобками.

Возможно ли, что установив VS (и, следовательно, платформу DotNet), вы настроили веб-сайт, на котором размещены эти страницы, на использование ASP.NET?

Вы пытались удалить регистрацию ASP.NET с этого сайта? Вы можете сделать это, запустив aspnet_regiis с ключом "-ua". Этот инструмент командной строки можно найти в:

C: \ Windows \ Microsoft.NET \ Framework [vX.YYY] \

Где X.YYY: 1.1.4322 или 2.0.50727

...