如何在 .NET 4 中使用 CAS 来锁定我的 MEF 扩展?
-
25-09-2019 - |
题
我在 .NET 4 中有一个应用程序,它使用 MEF 来实现可扩展性。我的主要应用程序有三个程序集: Host
, Application
和 Contracts
.
Host
是创建容器并进行组合的“引导”可执行文件。
Application
包含我的应用程序的逻辑,以及更多第三方扩展点。
Contracts
包含扩展点中使用的接口(和一些辅助类)。
因此,开发第三方应用程序的人必须包含对 Contracts
, ,但不至于 Application
.
我认为我的安全模型应该如下所示:
Host
和Application
应该 安全关键Contracts
应该 安全性安全关键- 所有 3rd 方扩展都应该是 安全透明
我认为 1.默认情况下会得到满足。我知道我可以实现2。具有程序集属性。问题是,如何执行规则 3?操作系统是否会通过将所有下载的扩展标记为不受信任来自动执行此操作?下载的扩展程序集是否有可能变得完全受信任?
解决方案
如果您的应用程序在完全信任的情况下运行,那么默认情况下您的扩展将在完全信任的情况下运行,并且能够执行它们想做的任何操作。它们的安全属性是什么并不重要。要限制扩展程序可以执行的操作,您需要创建一个沙箱应用程序域。你会设置你的 Host
和 Application
因为完全信任该 AppDomain,并且所有其他代码将仅具有您授予它的权限。
这是关于此主题的 MSDN 文章: 如何:在沙箱中运行部分受信任的代码
不隶属于 StackOverflow