C# для профессионалов. Том II
Шрифт:
Метод открывает простой текстовый файл из корня диска
Если выполнить приложение на локальной машине и нажать кнопку, то мы увидим загруженные из корня диска
Вспомним, что полномочия группы кода в зоне интранет являются более строгими, чем на локальной машине, в частности, они не разрешают доступ к локальному диску (за исключением папки, из которой выполняется приложение). Если снова выполнить приложение, но в этот раз с общего сетевого диска, оно будет выполняться так же, как и раньше, поскольку ему предоставлены полномочия для выполнения и доступа к интерфейсу пользователя. Однако, если теперь нажать кнопку Load Data на форме, будет порождаться исключение безопасности:
В тексте сообщения исключения упоминается объект
По умолчанию группе кода Intranet предоставляется множество полномочий
Если теперь снова выполнить приложение с общего сетевого диска и нажать на кнопку, мы увидим, что окно списка заполняется из файла в корне диска
В подобных сценариях, где используются ресурсы, управляемые полномочиями, рекомендуется расширять код, чтобы исключения безопасности перехватывались и приложение могло постепенно уменьшать свою деятельность. Например, в данном приложении можно добавить блок try-catch вокруг кода доступа к файлу и, если порождается исключение
В действительности,
Управление группами кода и полномочиями
В управляемой безопасности .NET, если сборка отказывает с исключением безопасности, обычно имеются три пути продолжения работы:
□ Смягчить политику полномочий
□ Переместить сборку
□ Применить для сборки строгое имя
Принимая решения такого рода, нужно брать в расчет уровень надежности сборки.
Включение и выключение системы безопасности
По умолчанию система безопасности .NET обычно включена. Если по какой-то причине необходимо ее выключить, это делается таким образом:
Чтобы снова включить систему безопасности, используйте команду:
Риски безопасности, присущие открытию машины при отключении системы безопасности, для нас означают, что систему безопасности необходимо отключать только для тестирования и отладки. Необходимо знать, что приведенная выше команда не требует административных привилегий, т.е. любой пользователь (или вирус) может отключить систему безопасности .NET. Поэтому настоятельно рекомендуется включать систему безопасности Windows, чтобы защититься против злонамеренного или необдуманного использования.
Восстановление политики системы безопасности
Если необходимо восстановить конфигурацию системы безопасности в ее первоначальном состоянии, можно ввести команду:
Эта команда переводит политику системы безопасности в состояние установки по умолчанию.
Создание группы кода
Можно создавать свои собственные группы кода и затем применять к ним определенные полномочия. Например, мы определяем, что хотим доверять любому коду с web-сайта
Эта команда выводит приблизительно:
…
Используя тот факт, что
Отметим, что эта команда будет спрашивать подтверждение при попытке явно изменить политику системы безопасности на машине. Если теперь снова выполнить команду