Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

Однако .NET существенно помогает операционной системе в ответах на вопросы, сколько полномочий предоставить коду, будет ли он приложением интранет, элементом управления на странице Web или приложением Windows Forms, загруженным от поставщика программного обеспечения в Интернете.

Конфигурационный файл системы безопасности

Как мы уже видели, общим звеном, соединяющим группы кода, полномочия и множества полномочий, являются три уровня политики системы безопасности (Enterprise, Machine и User). Информация о конфигурации системы безопасности в .NET хранится в конфигурационных файлах XML, которые защищены системой безопасности Windows. Например, политика безопасности уровня Machine распространяется только на пользователей групп Administrator, Power User и SYSTEM в Windows 2000.

В Windows 2000 файлы, которые хранят политику безопасности расположены в следующих местах:

Конфигурация политики предприятия

C:\WinNT\Microsoft.NET\Framework\v1.0.xxxx\Config\enterprise.config

Конфигурация политики машины

C:\WinNT\Microsoft.NET\Framework\v1.0.xxxx\Config\security.config

Конфигурация политики пользователя

%USERPROFILE%\application data\Microsoft\CLR security config\vxx.xx\security.config

Номер версии, отмеченный несколькими 'x', будет меняться в зависимости от версии .NET Framework, установленной на машине. При необходимости можно вручную редактировать эти конфигурационные файлы, например, если администратору нужно сконфигурировать политику для пользователя не регистрируясь в системе со своей учетной записью. Однако в общем рекомендуется использовать

caspol.exe
или подключаемый модуль ММС для управления политикой системы безопасности.

Простой пример

Создадим небольшое приложение, обращающееся к локальному диску, поведение которого требует тщательного управления. Приложение относится к C# Windows Forms с окном списка и кнопкой. Если нажать на кнопку, то окно списка заполняется из файла с именем

animals.txt
в корне диска
C:\
:

Приложение создается с помощью Visual Studio.NET, единственными изменениями в нем являются добавления к форме окна списка и кнопки Load Data, а также подключение к кнопке события, что выглядит следующим образом.

// Пример из SecurityAppl

private void button1_Click(object sender, System.EventArgs e) {

 StreamReader stream = File.OpenText(@"C:\animals.txt");

 String str;

 while ((str = stream.ReadLine) != null) {

listBox1.Items.Add(str);

 }

}

Метод открывает простой текстовый файл из корня диска

C:\
, который содержит список животных на отдельных строках, и загружает каждую строку в переменную типа string, которая затем используется для создания каждого элемента в окне списка.

Если выполнить приложение на локальной машине и нажать кнопку, то мы увидим загруженные из корня диска

C:\
данные, выведенные в окне списка, как и ожидалось. Неявно среда выполнения предоставила сборке полномочие, которое необходимо для выполнения, доступа к интерфейсу пользователя и чтения данных с локального диска:

Вспомним, что полномочия группы кода в зоне интранет являются более строгими, чем на локальной машине, в частности, они не разрешают доступ к локальному диску (за исключением папки, из которой выполняется приложение). Если снова выполнить приложение, но в этот раз с общего сетевого диска, оно будет выполняться так же, как и раньше, поскольку ему предоставлены полномочия для выполнения и доступа к интерфейсу пользователя. Однако, если теперь нажать кнопку Load Data на форме, будет порождаться исключение безопасности:

В тексте сообщения исключения упоминается объект

System.Security.Permissions.FileIOPermission
. Он является полномочием, не предоставленным приложению и запрошенным классом из Framework, который используется для загрузки данных из файла на локальном диске.

По умолчанию группе кода Intranet предоставляется множество полномочий

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

caspol.exe -chggroup 1.2 FullTrust

Если теперь снова выполнить приложение с общего сетевого диска и нажать на кнопку, мы увидим, что окно списка заполняется из файла в корне диска

C:\
и исключения не возникают.

В подобных сценариях, где используются ресурсы, управляемые полномочиями, рекомендуется расширять код, чтобы исключения безопасности перехватывались и приложение могло постепенно уменьшать свою деятельность. Например, в данном приложении можно добавить блок try-catch вокруг кода доступа к файлу и, если порождается исключение

SecurityException
, то в окне списка выводится строка "Permission denied accessing file" ("Полномочия не разрешают доступ к файлу"):

  • Читать дальше
  • 1
  • ...
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: