如何防止插件执行有害代码

F.P*_*F.P 7 .net c# plugins module

我目前正在为我的学士论文研究一个非常模块化和基于插件的框架.主要思想是,我的应用程序结构中有一个文件夹plugins,您可以在其中.dll放入符合特殊接口的已编译插件(例如-files)IPlugin.然后,应用程序使用用户选择的插件执行任务.所以,如果我想在PDF文件中执行一次任务,我会选择PdfPlugin一个单词文档中的一次,我会选择DocPlugin工作.

输出也在接口中定义,因此每个插件都返回相同的数据结构.只是每个库的实际工作不同.

现在,由于应用程序只调用接口中定义的方法,例如ParseDocument(),如何防止插件(可能是由第三方开发)执行有害代码?

我正在研究.NET3.5(可能会切换到4,尚未决定)和C#.

vcs*_*nes 8

我正在研究.NET3.5

在这种情况下,我会将您的插件隔离在单独的AppDomain中运行,使用代码访问安全性并限制App Domain的权限集.这个"沙盒"你的插件组件.

例如,您可以删除所有非托管代码权限和文件IO权限,然后您的插件将永远无法写入文件系统.

这不适合胆小的人.AppDomains可能很难处理并需要序列化,对象生存期策略等.您可以使用MAF,因为它消耗了大量的管道.