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

Переводы статьи Переводы статьи
Код статьи: 887459 - Vizualiza?i produsele pentru care se aplic? acest articol.

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

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

В этой статье

Введение

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

Дополнительная информация

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

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

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

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

Разработчики, использующие 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 If
End 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 - Последний отзыв: 3 декабря 2007 г. - Revision: 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

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

 

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