Опубликован: 11.09.2006 | Доступ: свободный | Студентов: 7433 / 307 | Оценка: 4.26 / 3.45 | Длительность: 30:46:00
ISBN: 978-5-9556-0080-2
Лекция 10:

Безопасность Windows-форм

Безопасность доступа кода

Основой определения разрешений для системы безопасности служит само приложение, его сборка и так называемое удостоверение. Удостоверение — это набор информации о сборке и ее производителе. Удостоверение может включать в себя:

  • Строгое имя, частное имя и версию сборки.
  • Название производителя сборки.
  • Зону, из которой сборка была получена, такую, как локальный компьютер, Интернет или локальная сеть.
  • Местонахождение, откуда сборка была получена, — такое, как папка на локальном компьютере или URL сайта, с которого загружена сборка.
  • Криптографический хэш-код сборки..

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

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

Разрешения — это право на использование частных ресурсов пользователя. Например, среди действий, защищаемых разрешениями доступа, есть такие, как чтение и запись файла, доступ к данным операционной системы или доступ к данным, находящимся в локальной базе данных.

.NET Framework имеет много встроенных разрешений, автоматически проверяющих код и разрешения на него. В таблице 10.1 перечислены все встроенные разрешения.

Таблица 10.1. Встроенные разрешения .NET Framework
Класс, представляющий разрешение Охраняемый ресурс
DirectoryServicesPermission Служба каталогов
DnsPermission Службы DNS (Domain Namespace Services)
EnvironmentPermission Ресурсы операционной системы
EventLogPermission Журнал событий
FileDialogPermission Диалоги открытия, сохранения файлов в пользовательском интерфейсе приложения
FileIOPermission Работа с файлами
IsolatedStorgeFilePermission Изолированное хранилище файлов
MessageQueuePermission Очереди сообщений
OleDbPermission Базы данных, доступ к которым осуществляется средствами поставщика данных OleDB
PerformanceCounterPermission Счетчики производительности
PrintingPermission Печать
ReflectionPermission Информация о типах во время выполнения
RegistryPermission Реестр
SecurityPermission Работа с правами доступа
ServiceControllerPermission Запуск или остановка Windows-служб
SocketPermission Соединение с компьютером через порты
SqlClientPermission Базы данных, доступ к которым осуществляется средствами SqlClient провайдера
UIPermission Пользовательский интерфейс
WebPermission Соединение с компьютерами через web-интерфейс

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

Функционирование безопасности доступа кода

.NET Framework принудительно налагает разрешения на управляемый код. Каждая загружаемая сборка получает набор разрешений на доступ к различным ресурсам. Эти разрешения основаны на политике безопасности. В свою очередь, политика безопасности использует удостоверение сборки для определения набора разрешений. Другими словами, .NET Framework применяет политику безопасности компьютера для назначения набора разрешений.

Группа кода состоит из условий членства в группе и набора разрешений, которые могут быть назначены сборке, если она будет находиться в данной группе. Если сборка подходит по условию к какому-либо членству, то она может получить сопоставимые с этим членством разрешения. Когда сборка подходит по условию к какому-либо членству, то говорится, что эта сборка принадлежит тому членству. Например, одним из условий членства в группе может быть условие, чтобы производителем сборки была компания Microsoft. Из этого следует, что любая сборка, разработанная компанией Microsoft, будет иметь право получить весь набор разрешений, разрешенный этому членству. Одним из таких разрешений может быть доступ к папке Temp рабочего каталога или доступ к имени пользователя.

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

Елена Дьяконова
Елена Дьяконова

При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: 

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан.

Затем:

Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll

Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз.

Александр Сороколет
Александр Сороколет

Свойство WindowState формы blank Maximized. Не открывается почемуто на всё окно, а вот если последующую форму бланк открыть уже на макс открывается :-/