使用MEF并在接口上使用继承导出会使我的代码对vunerabilities开放吗?

时间:2014-11-19 08:59:15

标签: c# interface mef

所以我使用MEF动态地将插件加载到我的应用程序中。

我像这样建立DirectoryCatalogue

//An aggregate catalog that combines multiple catalogs
var catalog = new AggregateCatalog();

foreach (var path in Directory.EnumerateDirectories(Properties.Settings.Default.PluginDirectory, "*", System.IO.SearchOption.TopDirectoryOnly))
{
     catalog.Catalogs.Add(new DirectoryCatalog(path));
}
// Create the CompositionContainer with all parts in the catalog (links Exports and Imports)
var container = new CompositionContainer(catalog);
//Fill the imports of this object
container.ComposeParts(this);

并且有一个标记为import的属性:

    [ImportMany]
    public ObservableCollection<ISyncPlugin> SyncPlugins
    {
        get;
        set;
    }

但我无法帮助,但感觉导出界面会使我的程序对vunerabilities开放。 如果编码器确定我的界面正在导出,他们可以实现我的界面并编写将由我的程序加载和运行的恶意代码。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

插件结构背后的想法是允许其他人为您的程序编写扩展。也就是说,您可以访问您的程序并向其他人授予他们想要的任何权限。如果您需要阻止插件执行某些操作,则必须执行此操作。

请参阅此处的“安全”说明:
How To Control Who Can Write Extensions For Your MEF Application