Я знаю, что CAS ограниченного значения , но я все равно хочу узнать об этом.
Я не понимаю, какое поведение я вижу: CAS по умолчанию, кажется, вообще не работает в моей довольно нормальной среде.
Возьмите этот образец класса:
using System;
using System.Security;
using System.Security.Permissions;
namespace CASNotWorkingExample
{
class Program
{
static void Main(string[] args)
{
FileIOPermission perm = new FileIOPermission(PermissionState.Unrestricted);
if (SecurityManager.IsGranted(perm))
Console.WriteLine("granted");
else
Console.WriteLine("denied");
Console.ReadKey();
}
}
}
Я создаю его и помещаю исполняемый файл CASNotWorkingExample.exe
на другой компьютер (IP-адрес 192.168.1.101) на общей файловой папке «ненадежный». Затем я запускаю его из командной строки без прав администратора, используя \\192.168.1.101\untrusted\CASNotWorkingExample.exe
, ожидая, что он вернет «отказано». Это не; возвращает «предоставлено».
Windows знает, что имеет дело с удаленным EXE сомнительной безопасности. Когда я запускаю ту же команду из диалогового окна «Пуск» меню «Пуск», я получаю обычное предупреждение системы безопасности: «Издатель не может быть проверен. Вы уверены и т. Д. И т. Д.». Так что это не то, чтобы ошибочно думать, что исполняемый файл работает на локальной машине и неправильно назначает зону.
Более того, когда я смотрю на тот же самый exe-файл с помощью инструмента настройки .NET 2.0 (щелкните правой кнопкой мыши «Политика безопасности времени выполнения, выберите« Оценить сборку ... »), я вижу, что .NET только назначает разрешения Internet_Zone на сборку. Эти разрешения НЕ включают FileIOPermission (изолированное хранилище является его собственным разрешением).
альтернативный текст http://img5.imageshack.us/img5/2256/casperms.jpg
Данные, которые могут быть полезны для кого-то другого, но до сих пор не были для меня:
- Я столкнулся с этим во время работы над книгой MS Press для экзамена MCTS 70-536. Глава 11 посвящена CAS; Урок 1 / Пример 1 терпит неудачу для меня, в значительной степени, как описано выше. То, что вы видите здесь, является урезанным вариантом этого.
- Я убедился, что такой EXE-файл действительно может записывать на диск, т. Е. Проверка IsGranted, вероятно, правильная.
- Две машины работают под управлением Vista SP1 и WinXP. Поведение одинаково, независимо от того, какой клиент, а какой файловый сервер, так что это не Vista.
- Поведение идентично при работе от имени обычного непривилегированного пользователя и от имени администратора.
- Не работает в домене AD.
- То же имя пользователя и пароль на клиенте и файловом сервере, поэтому я могу получить доступ к файлу без необходимости использовать
net use
для предоставления учетных данных.
Я уверен, что это будет один из тех "случайных" моментов ... Чего мне не хватает?