Реклама:

return reader.ReadToEndO;

>

Этот код полностью открыт для атак, связанных с отслеживанием каталогов*, Если злоумышленник (или просто любопытный пользователь) введет ../../Stuff-IShouldNotSee.txt, он легко взломает каталог содержимого. (Вместе с сообщениями об ошибках, в которых достаточно много информации, например о том, что файл не' найден, код помогает пользователю понять структуру папок Web-сервера.) Стандарт*] ная контрмера — фиксирование ошибки кода, а также соответствующих списков ACL файловой системы NTFS на сервере для рабочего процесса ASP.NET. Кроме того, целесообразно применять технологию сдерживания, указывающую .NET Framework,.] что все файлы классов ввода-вывода можно считывать только из папки содержимого, но не с других мест жесткого диска.

Еще одна сложная задача связана с изоляцией приложения на серверах. При совместном использовании Web-cepnepa многими сторонами нет уверенности в том, что одно приложение не получит доступ к ресурсам другого приложения или даже операционной системы. Это может произойти, например, на корпоративном сервере, если к нему либо к сценариям совместного использования ISP имеют доступ множество организаций или разработчиков.

При этом следует учитывать, как обычно устанавливаются Web-серверы и как контролируется доступ к ним. По умолчанию каждое Web-цриложение запускается в одном и том же пуле приложений, то есть приложения запускаются в одном прог цессе. Это, в свою очередь, означает, что они запускаются под одной учетной записью процесса. Таким образом, списки ACL файловой системы NTFS, которые разрешают доступ Read к файлам одного приложения, применяются и к другому приложению. Кроме того, одно из приложений может использовать рефлексию или Win32 для считывания данных другого приложения. Это, в частности, позволяет одному приложению считывать и модифицировать память произвольного процесса, перехватывать маркеры защиты Microsoft Windows, имитировать их и даже «на лету» изменять код про грамм CLR.

Избежать перечисленного можно посредством распределения приложения по рабочим процессам. Однако в таком случае администратор должен с большей осто* рожностыо выдавать разрешения NTFS. Кроме того, вы можете отключить доступ к неуправляемому коду и использовать рефлексию.

Более тонкая проблема касается каталога, где ASP. NET размещает свои временные сборки (по умолчанию это WINDOWS\Microsoft.NEТ\Ргате\тогк\версияTemporary ASP.NET Files). Все учетные записи всех рабочих процессов имеют доступ к этому каталогу. (Обычно списки ACL задаются для группы IIS^WPG, которая хранит все идентификаторы рабочих процессов.) С помощью следующей страницы можно легко просмотреть временный каталог и загрузить компилированные страницы, отдельный код, папку AppCode и предварительно скомпилированные сборки н другие приложения, установленные на той же машине.

Загрузка данных из других приложений

<%@ Page Language="C«" *>

<№ Import Namespace="System.Web.Configuration" *> <ti0 Import Namespace="System. 10" %>


⇐ Предыдущая страница| |Следующая страница ⇒