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