【发布时间】:2011-06-16 02:43:05
【问题描述】:
我有一个程序和一个简单的插件架构,其中插件实现了一个通用接口,主程序加载了所有实现这个接口的插件。这是迄今为止我发现的最常见的自定义插件架构,所以这就是我正在使用的。
我没有使用 Microsoft 的 MEF,我有理由不这样做。那我就不说了。
问题在于,当插件加载时,无论它们对主程序及其表单/类/等有多“盲目”。它仍然可以访问System.Windows.Forms.Application,因此可以访问我的应用程序及其当前正在运行的表单/方法/控件/等。
我不想要这个。有没有办法限制插件对主应用程序的访问?
编辑:关于插件的更多信息
我们(我的老板和我)目前正在讨论插件需要做什么。它们显然都需要添加功能,但我们最初决定让每个插件访问当前正在运行的表单,以便它可以直接向表单添加控件和事件。这是基于这样的假设,即只有我们开发人员会编写它们。
现在我们正在考虑第三方插件的可能性,显然,原始设计的安全性与在无人的情况下打开的门上的“请勿进入”标志一样多。
或者在万圣节时在一碗个人吃喝玩乐上挂一个“Take One”标志。
【问题讨论】:
-
如果插件引用了Windows.Form dll,你能拒绝插件吗?
-
@hungryMind 如果有人使用反射来访问类型,很容易绕过对引用的检查。 Stringy 攻击将绕过这一点。
标签: c# plugins restriction