Как я могу использовать CAS в .NET 4 для блокировки моих расширений MEF? - PullRequest
3 голосов
/ 04 августа 2010

У меня есть приложение в .NET 4, которое использует MEF для расширяемости.Мое основное приложение имеет три сборки: Host, Application и Contracts.

Host - это исполняемый файл «boot-strapping», который создает контейнер и создает композицию.

Application содержит логику моего приложения и дополнительные точки расширения для сторонних разработчиков.

Contracts содержит интерфейсы (и некоторые вспомогательные классы), которые используются в точках расширения.

Поэтому кто-то, разрабатывающий стороннее приложение, должен включить ссылку на Contracts, но не на Application.

Я думаю, что моя модель безопасности должна выглядеть следующим образом:

  1. Host и Application должно быть SecurityCritical
  2. Contracts должно быть SecuritySafeCritical
  3. Все сторонние расширения должны быть SecurityTransparent

Я думаю, что 1. будет выполнено по умолчанию.Я знаю, что я могу реализовать 2. с атрибутом сборки.Вопрос в том, как применить правило 3.?Операционная система делает это автоматически, помечая все загруженные расширения как ненадежные?Возможно ли, чтобы загруженная сборка расширения стала полностью доверенной?

1 Ответ

3 голосов
/ 04 августа 2010

Если ваше приложение работает с полным доверием, то по умолчанию ваши расширения будут работать с полным доверием и смогут делать все, что захотят.Неважно, какие атрибуты безопасности на них.Чтобы ограничить возможности расширений, необходимо создать домен приложения для песочницы.Вы должны установить свои Host и Application как полностью доверенные для этого AppDomain, а весь другой код будет иметь только те разрешения, которые вы ему предоставите.Запустить частично доверенный код в песочнице

...