加载不受信任的程序集

问题描述:

我的应用程序有一个插件模型,允许第三方开发人员编写将在主应用程序中执行的程序集。直到现在,实际使用只允许受信任的开发人员提供插件。加载不受信任的程序集

我想将这个框架公开给不受信任的开发人员。为此,我希望将程序集限制在内存操作中,该操作不会触及任何本地资源(硬件,注册表,数据库等),并且只允许使用最大内存量。

目前,与受信任的程序集,我只是使用Assembly.Load和反射来实例化对象。我需要的是如何限制从外部程序集加载的代码的权限。

+0

[.NET可能不适合运行完全不受信任的代码](http://security.stackexchange.com/questions/87001/),尽管我希望不是这样。 – 2015-04-27 23:31:32

http://msdn.microsoft.com/en-us/library/ms972968.aspx - 显示如何将插件加载到单独的AppDomain中。

http://msdn.microsoft.com/en-us/library/ms130766.aspx - 创建AppDomain的这种重载将允许您指定插件在不可信时所具有的权限。

基本上你需要将程序集加载到单独的AppDomain中。它很好解释了如何做到这一点,以及如何限制其他程序集加载到MSDN文档中新的AppDomain中。您还需要阅读CAS。这允许您为加载的assemply提供API,同时限制可以在不同信任级别调用的方法。