* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Конфигурирование защиты по правам доступа к коду
8 февраля 2009

Зашита по правам доступа к коду призвана предотвратить использование кода при-
ложения лицами, не имеющим на то полномочий, а также предоставить системно-
му администратору доступ к требованиям, связанным с зашитой приложения. Об-
ладая этой информацией, администратор сможет управлять исполнением конкрет-
ных сборок.
Подобно защите, основанной на ролях, зашита по правам доступа к коду бази-
руется на разрешениях. Но если в первом случае разрешения представляют поль-
зователей с соответствующими именами и/или ролями, то здесь разрешения пред-
ставляют системные ресурсы и управляют доступом к ним. Рассмотрим для приме-
ра файловую систему. Если некоторое приложение записывает данные в файлы,
необходимо защитить эти файлы от несанкционированного доступа, а файловую
систему — от вреда, который способны причинить злоумышленники. Любой код,
обращающийся к файловой системе, следует защитить объектом File I О Permission.
Этот объект проверяет наличие необходимых разрешений у каждого, кто пытается
вызвать защищенный им код.
Разрешения на доступ к коду
Каждое разрешение на доступ к коду защищает некоторый ресурс (таблица 9-3).
Большинство подобных разрешений определено в пространстве имен System Security,
за исключением немногих специальных, которые располагаются в других
пространствах имен.
Таблица 9-3. Разрешения на доступ к коду
Имя Описание
Directory Services Permission Управляет доступом к Active Directory
EnvironmentPermission Определяет возможность чтения и установки переменных
окружения
Even! Log Permission Определяет возможность чтения и записи журнала событий
File Dialog Permission Управляет доступом к файлам и каталогам через диалоговое
окно Open File
File! 0 Permission Определяет возможность создания, чтения и записи
объектов файловой системы
OleDb Permission Управляет доступом к базам данных OLEDB
PrintingPermission Управляет доступом к принтеру
Reflection Permission Управляет доступом к классам System. Reflection с целью
получения сведений о типах во время выполнения
Registry-Permission Определяет возможность чтения и записи реестра
Security Permission Управляет предоставлением ряда прав, в том числе
на исполнение кода, манипулирование потоками
и участниками безопасности, а также на вызов
неуправляемого кода
SQLClientPermission Управляет доступом к базам данных Microsoft SQL Server
UlPermission Управляет доступом к пользовательскому интерфейсу
Этот, далеко не полный, список позволяет, тем не менее, составить представле-
ние о разрешениях, применяемых для зашиты приложений.
Создание разрешений на доступ к коду
Каждое разрешение на доступ к коду поддерживает собственный набор перегру-
женных конструкторов, позволяющий по-разному конфигурировать защищаемые
им ресурсы. Можно создать разрешение, управляющее доступом ко всем защищае-
мым им ресурсам либо к их подмножеству. Для этого применяют соответствующие
параметры во время создания объекта разрешения.
Допускается создавать разрешения, предоставляющие неограниченный доступ
к ресурсам, при помощи флага PermissionState. Unrestricted. Напротив, флаг PermissionState.
None позволяет создать разрешение, которое вовсе не дает доступа к защи-
щаемым ресурсам. Вот как это делается:
Visual Basic .NET
Предоставить неограниченный доступ к ресурсам отражения.
Dim myPennission As New
ReflectionPermission(PermissionState.Unrest rioted)
Полностью запретить доступ к ресурсам пользовательского интерфейса.
Dim anotherPermission As New
LJIPermission(PermissionState. None)
Visual C#
// Предоставить неограниченный доступ к ресурсам отражения.
ReflectionPermission myPermission = new
ReflectionPermission(PermissionState.Unrestricted);
// Полностью запретить доступ к ресурсам пользовательского интерфейса.
UlPermission anotherPermission = new
UIPermission(PermissionState.None);
Каждое разрешение поддерживает дополнительные конструкторы, позволяющие
создавать по-разному настроенные объекты разрешений. Подробное обсуждение
всех версий конструкторов выходит за рамки этого учебного курса, но разработчи-
ку полезно знать о них и о предоставляемой ими возможности «тонкой настройки»
разрешений. Вот как создать разрешение, управляющее доступом для записи к
единственному файлу файловой системы:
Visual Basic .NET
Dim myPermission As New
FilelOPemission(FilelOPemissionAccess.Write. "C:\nyFile.txt")
Visual C#
FilelOPermission myPermission - new
FilelOPerTiission(FilelOPerrnissionAccess. Write, "C: \\iriyFile. txi");
Члены класса CodeAccessPermission
Все объекты разрешений на доступ к коду происходят от класса CodeAccessPermission,
поэтому все они поддерживают одни и те же методы для проверки прав доступа и
реализации политики безопасности. Самые важные из них описаны в таблице 9-4.
Таблица 9-4. Методы класса CodeAccessPermission
Метод Описание
Assert Позволяет вызывающему этот метод коду получить доступ
к ресурсам, защищенным некоторым разрешением, даже если код,
расположенный выше по стеку вызовов, не обладает необходимыми
для этого разрешениями
Demand Требует наличия у всех функций, расположенных выше по стеку
вызовов, разрешения на доступ к защищенному данным
разрешением ресурсу
Deny Отказывает коду, вызвавшему этот метод, в доступе к ресурсу,
защищенному данным разрешением
PermitOnly Отказывает коду, вызвавшему этот метод, в доступе ко всем
ресурсам, защищенным данным разрешением, за исключением
заданного подмножества этих ресурсов
ReveiiAll Отменяет все разрешения, предоставленные или отобранные ранее
с помощью методов Assert, Deny и PermitOnly
RevertAssert Удаляет все разрешения, предостаатенные ранее при помощи метода
Assert
Revert Deny Возвращает все разрешения, отозванные ранее при помощи метода
Deny
Revert Permit Only Удаляет все разрешения, предоставленные или отобранные ранее
с помощью метода PermitOnty
В следующем разделе обсуждается применение этих методов для реализации за-
щиты по правам доступа к коду.

Теги: .NET

Статьи по теме:

Объект Graphics
Применение отладочных инструментов
Boost – версия 1.36.0
Свойства-наборы
ToDoList 5.6.6
Локализация формы
Установка и извлечение динамических свойств вручную
Применение наборов элементов управления
Использование шаблонов кода
Перегрузка членов
Вызов функций Windows API
Automatically Starting your Application on Windows Mobile
Принципы создания элементов управления
Перебор элементов массивов и наборов
Абстрактные классы и члены
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Конфигурирование защиты по правам доступа к коду. Регион сайта: Москва и Санкт-Петербург