ограничение скомпилированной сборки codedom

Я написал менеджер плагинов для своего приложения, он использует codedom для компиляции кода С# в библиотеку классов и создания экземпляров его типов. он отлично работает, и теперь я хочу ограничить разрешения на скомпилированную сборку. К сожалению, я не знаю, как это сделать. насколько я понимаю, я должен каким-то образом использовать CompilerParameters.Evidence, но мне неясно, как это сделать. для ясности, я не хочу просто классифицировать сборку как определенную зону, я хочу ограничить ее набором разрешений, который передается в качестве аргумента в конструкторе менеджеров плагинов. Я также хотел бы отметить, что я не загружаю сборку в новый домен приложения, она выполняется в том же домене, что и остальная часть приложения.

Благодарю.


person Amir    schedule 24.12.2009    source источник
comment
Ровно через год у меня тот же вопрос. Удалось ли вам найти ответ?   -  person Glenn    schedule 24.12.2010
comment
Как это сделать с помощью .NET Framework 4.0? CompilerParameters.Evidence устарела... есть идеи?   -  person Ralph    schedule 17.01.2013


Ответы (1)


Примеры CodeDOM, которые обеспечивают безопасность, сложны для Google. После нескольких часов чтения я нашел два подхода.

Лучшей кажется Managed Addin Framework, потому что она разработана именно для вашего сценария использования. Ограничение доступа к коду сборки подключаемого модуля

CAS (Code Access Security) также является вариантом, но он менее популярен и скоро исчезнет. Вот пример, взятый из этого [SO post] [3]

var myEvidence = new Evidence(new object[] {SecurityZone.Internet});
var newDomain = AppDomain.CreateDomain("InternetDomain");
myDomain.Load("MyUntrustedAssembly.dll", myEvidence);
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType");

Ссылки CAS .NET/Security: ограничение сборок, загружаемых во время выполнения от доступа к определенным API http://www.gamedev.net/community/forums/topic.asp?topic_id=418038 http://www.go4answers.com/Example/codedom-security-64586.aspx

person Glenn    schedule 24.12.2010