Почему демонстрационный код CAS, запущенный на localhost (127.0.0.1), не распознает зоны безопасности?

Я провожу лабораторные работы в главе 11 учебного комплекта MCTS 70-536, посвященной безопасности кодового доступа. Я использую XP Pro. Первая лабораторная работа создает сборку, которая проверяет наличие различных разрешений и сообщает сообщение, если они существуют. Однако, когда я запускаю его как \\\127.0.0.1\c$\ListPermissions.exe, он должен распознавать нахождение в зоне интрасети и использовать набор разрешений интрасети. Однако все разрешения вроде бы предоставлены. Кому-нибудь такое поведение кажется знакомым? Если нет, есть ли способ проверить, в какой зоне, по мнению сборки, она находится при запуске из общего ресурса? Если конкретная часть этого вопроса слишком расплывчата, дайте мне знать, и я постараюсь перефразировать ее.


person kpierce8    schedule 18.08.2009    source источник
comment
Можете ли вы вставить код в вопрос? Можете ли вы вставить на pastebin.com больше, чем несколько строк?   -  person Kev    schedule 18.08.2009


Ответы (3)


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

 object[] hostEvidence = { new Zone(SecurityZone.Internet) };
 Evidence appDomainEvidence = new Evidence(hostEvidence, null);
 AppDomain d = AppDomain.CreateDomain("MyDomain", appDomainEvidence);
 d.ExecuteAssembly("ListPermissions.exe");

Когда моя зона установлена ​​на MyComputer, ListPermissions выполняется без каких-либо исключений, и каждое разрешение возвращает true. Однако, когда я устанавливаю свою зону в Интернет или интрасеть, строка ExecuteAssembly начинает выдавать исключения, которые на самом деле меня порадовали. По крайней мере, в какой-то момент это работает.

Насколько я понимаю, в книге говорится, что когда вы запускаете приложение из разных мест, среда CLR видит, что запущенный код имеет другое свидетельство и передает сборку другой группе кода, такой как мой компьютер или Интернет. Однако, по крайней мере, с моей конфигурацией это не так, и другой форум пришел к выводу, что с .NET framework 3.5 запущенная сборка из общей папки не имеет точных доказательств, как сборка, запущенная из зоны Интернета. http://social.msdn.microsoft.com/Forums/en/clr/thread/5f5f0925-64fc-4fc8-9be3-d077d27d2554 На самом деле я не знаю точного решения, которое заставляет программу выполняться так, как описано в книге. Просто хочу поделиться тем, что с созданным пользовательским доменом приложения код работает так, как должен.

Надеюсь это поможет

Спасибо

person cgon    schedule 15.12.2010

Похоже, что произошли изменения в платформе .net. Было добавлено новое свидетельство при запуске управляемого exe. Когда исполняемый файл запускается непосредственно из Win32 CreateProcess API, управляемому исполняемому файлу предоставляется полное доверие.

Конечно, инструмент настройки .net не запускает исполняемый файл, а просто проверяет его. Это означает, что свидетельство отличается и влияет на присвоенную ему группу кодов. Это, в свою очередь, влияет на разрешения.

Это сильно сбивает с толку. Еще более запутанным является ответ, который вы должны дать на экзамене. Думаю, ответ будет как в книге. Я не думаю, что это изменение дошло до отделов подготовки экзаменов.

Более подробную информацию можно найти здесь:

msdn social

блог Брэда Абрамса

person Ed Sykes    schedule 18.01.2010
comment
Мне нужно поиграть с этим. Похоже, он указывает в правильном направлении. Спасибо. - person kpierce8; 30.01.2010

Привет, я не знаю, узнали ли вы, что происходит при запуске этого примера, но, используя Evaluate Assembly в .NET Framework 2.0 Configuration Tool, я вижу, что эта сборка должна запускаться в группах кода Internet_Zone и Internet_Same_Site_Access. Эти группы кода предоставляют подмножество, состоящее из 5 авторизаций: - Пользовательский интерфейс - Изолированные хранилища - Защита - Диалоги ввода-вывода - Печать

В инструменте настройки все в порядке ... но поведение сборки совсем другое ... Не знаю :(

Марко

person Marconline    schedule 14.10.2009