ограничение компилированной сборки - PullRequest
2 голосов
/ 24 декабря 2009

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

спасибо.

1 Ответ

1 голос
/ 24 декабря 2010

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

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

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

...