【发布时间】:2010-05-10 12:12:39
【问题描述】:
简介:
我目前正在使用 C/C++ 开发文档分类器软件,我将使用朴素贝叶斯模型进行分类。但是我希望用户使用他们想要的任何算法(或者我将来想要的),因此我将架构中的算法部分分离为一个插件,该插件将附加到主应用程序@应用程序启动。因此,任何用户都可以将自己的算法编写为插件并将其与我的应用程序一起使用。
问题陈述:
我打算开发这个的方式是将用户想要使用的每个算法都制作成一个 DLL 文件并放入一个特定的目录中。一开始,我的应用程序将搜索该目录中的所有 DLL 并加载它们。
我的问题:
(1) 如果恶意代码被制作成 DLL(并且具有插件框架要求的相同功能)并放入我的插件目录怎么办?在这种情况下,我的应用程序会认为它是一个插件并选择它并调用它的函数,因此恶意代码很容易让我的整个应用程序崩溃(在最坏的情况下可能使我的应用程序成为恶意代码启动器!!!) .
(2) 使用 DLL 是实现插件设计模式的唯一方法吗? (不仅是因为害怕恶意插件,而且出于好奇,这是一个普遍的问题:))
(3) 我觉得很多软件都是用插件模型写的,是为了扩展性,如果是这样,他们如何防御这种攻击?
(4) 总的来说,您如何看待我决定使用插件模型来实现可扩展性(您认为我应该考虑其他替代方案吗?)
谢谢
-微内核:)
【问题讨论】:
-
您的应用程序的主体是什么语言,C 还是 C++?您希望使用 C 或 C++ 编写扩展,还是两者兼而有之?
-
除了 UI 部分,一切都在 C 中。所以,我希望扩展在 C 中。抱歉,我之前应该提到过。谢谢你:)
标签: c architecture dll plugins design-decisions