В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Профилактика ошибок в процедуре приведения имен к каноническому виду в приложениях ASP.NET

Введение
В статье описано, каким образом можно усовершенствовать приложения ASP.NET, чтобы избежать распространенных проблем при приведении имен к каноническому виду.
Дополнительная информация

Что такое приведение имен к каноническому виду?

Приведение к каноническому виду — это процесс, при котором различным формам имени сопоставляется одно стандартное имя. Такое стандартное имя называется каноническим именем. Например, на компьютере несколько имен c:\dir\test.dat, test.dat и ..\..\test.dat могут соответствовать одному и тому же файлу. В данном случае всем им будет сопоставлено каноническое имя c:\dir\test.dat.

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

Защита веб-приложений от распространенных ошибок, связанных с приведением к каноническому виду

Разработчики, использующие Microsoft ASP.NET, могут повысить надежность своих приложений, добавив в файл Global.asax, хранящийся в корневом каталоге приложения, обработчик события Application_BeginRequest. Этот обработчик будет выполняться при получении всех запросов, и с его помощью очень удобно размещать в приложении дополнительные процедуры проверки для защиты от ошибок, связанных с использованием имен.

Пример кода

Приведенный ниже пример показывает, как вставлять обработчик события Application_BeginRequest в файл Global.asax. Этот обработчик, выполняющий проверку путей, позволяет защитить приложение от запросов, содержащих запрещенные символы и неверные адреса URL, т. е. от основных ошибок приведения имен.

Пример кода файла Global.asax (Visual Basic .NET)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)    If (Request.Path.IndexOf(chr(92)) >= 0 OR _        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then        Throw New HttpException(404, "Not Found")    End IfEnd Sub</script>

Пример кода файла Global.asax (C#)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {    if (Request.Path.IndexOf('\\') >= 0 ||        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {        throw new HttpException(404, "not found");    }}</script>

Заявление об отказе от ответственности

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

Номер статьи: 887459 — последний просмотр: 12/03/2007 18:52:51 — редакция: 2.5

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

  • kbsecurity kbtshoot KB887459
Отзывы и предложения