3

我在 .NET 4 中有一个使用 MEF 进行可扩展性的应用程序。我的主应用程序有三个程序集HostApplicationContracts

Host是创建容器并进行组合的“引导”可执行文件。

Application包含我的应用程序的逻辑,以及第 3 方的更多扩展点。

Contracts包含在扩展点中使用的接口(和一些帮助类)。

因此,开发第 3 方应用程序的人必须包含对 的引用Contracts,而不是对Application.

我在想我的安全模型应该是这样的:

  1. Host并且Application应该是SecurityCritical
  2. Contracts应该是SecuritySafeCritical
  3. 所有第 3 方扩展都应该是SecurityTransparent

我认为 1. 默认情况下会满足。我知道我可以使用程序集属性来实现 2.。问题是,我如何执行规则 3.?操作系统是否通过将所有下载的扩展标记为不受信任来自动执行此操作?下载的扩展程序集是否有可能变得完全受信任?

4

1 回答 1

3

如果您的应用程序在完全信任的情况下运行,那么默认情况下,您的扩展程序将在完全信任的情况下运行,并且能够做任何他们想做的事情。它们的安全属性是什么并不重要。要限制扩展可以做什么,您需要创建一个沙盒应用域。您将在该 AppDomain 中设置您的HostApplication完全信任的,并且所有其他代码将仅具有您授予它的权限。

这是有关此主题的 MSDN 文章:如何:在沙盒中运行部分受信任的代码

于 2010-08-04T06:04:42.960 回答