Модуль HTTP для приведения имен к каноническому виду в приложениях ASP.NET

Переводы статьи Переводы статьи
Код статьи: 887289 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

Для снижения риска возникновения уязвимостей в пользовательских приложениях ASP.NET корпорация Майкрософт разработала модуль HTTP, выполняющий приведение имен к каноническому виду. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
887459 Профилактика ошибок в процедуре приведения имен к каноническому виду в приложениях ASP.NET
Дополнительные сведения об определении версии ASP.NET см. в следующей статье базы знаний Майкрософт:
318785 Как определить, установлены ли пакеты обновления для .NET Framework
Дополнительные сведения о проблемах в ASP.NET, связанных с приведением имен к каноническому виду, см. на веб-узле Майкрософт по адресу:
http://www.microsoft.com/Rus/Security/Incident/AspNet.mspx

Проблема

Веб-сервер, получающий запрос с адресом URL, сопоставляет адрес, указанный в запросе, конкретному файлу. Чтобы избежать обслуживания недопустимых запросов или обращения к недопустимым файлам, перед выполнением сопоставления осуществляется анализ указанного адреса и приведение имен к каноническому виду. Необработанные ошибки, возникающие в процессе приведения имен, могут вызывать непредсказуемые последствия. Дополнительные сведения о приведении имен к каноническому виду см. на веб-узле корпорации Майкрософт по адресу:
http://msdn2.microsoft.com/en-us/library/aa302420.aspx

Решение

Модуль HTTP Microsoft.Web.ValidatePathModule.dll

Сведения о загрузке

Загрузите следующий файл с веб-узла центра загрузки корпорации Майкрософт:

Свернуть это изображениеРазвернуть это изображение
Загрузить
Загрузить пакет VPModule.msi

Дата выпуска: 7 октября 2004 г.

Дополнительные сведения о загрузке файлов с веб-узла технической поддержки Майкрософт см. в следующей статье базы знаний Майкрософт:
119591 Как загрузить файлы поддержки Майкрософт из Интернета
Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использует последние версии антивирусного программного обеспечения на момент публикации файла для проверки его на наличие вирусов. Файл хранится на закрытом сервере, предотвращающем его несанкционированное изменение.

Необходимые условия

Пакет VPModule.msi разработан для использования с 32-разрядной версией Microsoft .NET Framework.

Перед установкой пакета VPModule.msi создайте резервные копии всех имеющихся на компьютере экземпляров файла Machine.config. Для этого выполните следующие действия.
  1. Выберите в меню Пуск пункт Выполнить, введите команду cmd и нажмите кнопку ОК.
  2. Найдите все копии файла Machine.config. Файл (или файлы) Machine.config находятся в следующей папке, где <номер_версии_framework> — номер установленной версии Microsoft .NET Framework:
    %windir%\Microsoft.NET\Framework\<номер_версии_framework>\CONFIG
    Например, если пакет .NET Framework версии 1.1 установлен на диске C, введите следующую команду и нажмите клавишу ВВОД:
    cd /d %windir%\microsoft.net\framework\v1.1.4322\config
  3. Чтобы создать резервную копию файла Machine.config, введите следующую команду и нажмите клавишу ВВОД:
    copy machine.config machine.config.bak
Повторите эти действия для всех установленных на компьютере экземпляров .NET Framework.

Сведения об установке

Корпорация Майкрософт выпустила пакет VPModule.msi, устанавливающий на компьютере файл Microsoft.Web.ValidatePathModule.dll. В процессе установки в файл (или файлы) Machine.config всех установленных экземпляров .NET Framework добавляются сведения о новом модуле HTTP.

Чтобы установить данный пакет, выполните следующие действия. Загрузите файл VPModule.msi. Дважды щелкните загруженный файл, чтобы начать установку. Следуйте инструкциям на экране.

Действия, выполняемые программой установки пакета VPModule.msi

Программа установки извлекает из установочного пакета модуль Microsoft.Web.ValidatePathModule.dll и добавляет во все экземпляры файла Machine.config запись следующего вида:
    <system.web>
        <httpModules>
            <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>
        </httpModules>
    </system.web>
Затем программа установки добавляет файл Microsoft.Web.ValidatePathModule.dll в глобальный кэш сборок (Global Assembly Cache, GAC).

Разработчики, интересующиеся подробностями работы файла Microsoft.Web.ValidatePathModule.dll, могут ознакомиться со следующим кодом:
namespace Microsoft.Web {
    public class ValidatePathModule : IHttpModule {
        public ValidatePathModule() {
        }
        void IHttpModule.Init(HttpApplication app) {
            app.BeginRequest += new EventHandler(this.OnBeginRequest);
        }
        void IHttpModule.Dispose() {
        }
        void OnBeginRequest(Object source, EventArgs eventArgs) {
            HttpRequest request = (source as HttpApplication).Request;
            string physicalPath = request.PhysicalPath;
            if (request.Path.IndexOf('\\') >= 0 || Path.GetFullPath(physicalPath) != physicalPath) {
                throw new HttpException(404, "Not Found");
            }
        }
    }
}
Сведения о параметрах командной строки, поддерживаемых программой установки, см. на веб-узле Майкрософт по адресу:
http://msdn2.microsoft.com/en-us/library/aa367988.aspx

Проверка правильности установки

После успешной установки модуля в реестр добавляется следующий раздел:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{30EFFF0C-573D-46FB-8AD5-00887289261A}
Примечание. При установке модуля вручную, как описано в разделе «Установка вручную» данной статьи, указанный раздел в реестре не создается. При использовании параметра /a выполняется только извлечение файлов. Реестр при этом не обновляется.

Сведения об удалении

Чтобы удалить внесенные изменения, запустите файл VPModule.msi и выберите параметр Remove или выполните удаление с помощью средства Установка и удаление программ панели управления.

Автоматическая установка

Чтобы установить данный пакет в автоматическом режиме, используйте следующую команду:
msiexec /i vpmodule.msi /qb-
Чтобы удалить данный пакет в автоматическом режиме, используйте следующую команду:
msiexec /x vpmodule.msi /qb-

Установка вручную

Чтобы установить модуль Microsoft.Web.ValidatePathModule.dll вручную, выполните следующие действия.
  1. Создайте резервные копии файла (или файлов) Machine.config. Дополнительные сведения см. в разделе «Необходимые условия» данной статьи.
  2. Загрузите пакет VPModule.msi. Дополнительные сведения см. в разделе «Сведения о загрузке» данной статьи.
  3. Извлеките файл Microsoft.Web.ValidatePathModule.dll из пакета VPModule.msi. Для этого выполните следующую команду:
    msiexec /a vpmodule.msi
  4. Скопируйте извлеченный модуль в глобального кэша сборок. Для этого выполните следующую команду:
    gacutil -i microsoft.web.validatepathmodule.dll
    Примечание. Модуль microsoft.web.validatepathmodule.dll извлекается в папку «Microsoft ValidatePath Module», местоположение которой указывается пользователем при извлечении данного модуля.
  5. Добавьте в раздел <httpModules> файла (или файлов) Machine.config следующую запись:
    <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>
    

Известные проблемы

Ниже перечислены известные проблемы, возникающие при установке данного модуля.
  • Программа установки проверяет, добавляются ли в раздел <httpModules> файла (или файлов) Machine.config сведения о модуле Microsoft.Web.ValidatePathModule.dll. Однако в некоторых случаях данный модуль не может выполнять свои функции.

    Это может происходить, если файл Web.config содержит команды отключения модулей, перечисленных в файле Machine.config. Например, если поместить в файл Web.config следующие команды
    <httpModules>
        <clear/>
    </httpModules>
    
    то в приложении, к которому относится данный файл Web.config, модуль Microsoft.Web.ValidatePathModule.dll использоваться не будет. Как правило, подобная конфигурация применяется, если разработчик приложения не хочет использовать модули HTTP, перечисленные в файле Machine.config. В этом случае список модулей, содержащийся в файле Machine.config, игнорируется, и создается отдельный список модулей, используемых данным приложением.
  • После установки новой версии .NET Framework необходимо удалить и повторно установить пакет VPModule.msi.
  • Дополнительные сведения об ошибках, возникающих при работе со службами SQL Server Reporting Services и пактом VPModule.msi, см. в следующей статье базы знаний Майкрософт:
    887787 После установки модуля ASP.NET ValidatePath появляется сообщение об ошибке

Ссылки

Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
887405 Развертывание модуля VPModule.msi в домене Active Directory с помощью установщика Windows и групповых политик
Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
887404 Развертывание модуля ValidatePath с помощью сервера Systems Management Server 2003
Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
887290 Использование средства сканирования ASP.NET ValidatePath Module Scanner (VPModuleScanner.js)
Дополнительные сведения о состояниях сеансов см. на следующем веб-узле корпорации Майкрософт:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconsessionstate.asp

Свойства

Код статьи: 887289 - Последний отзыв: 3 декабря 2007 г. - Revision: 3.6
Информация в данной статье относится к следующим продуктам.
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 1
  • Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
Ключевые слова: 
kbsecurity kbtshoot KB887289

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com