Введение
В настоящее время я занимаюсь разработкой программного обеспечения для классификации документов на C / C ++ и буду использовать наив-байесовскую модель для классификации. Но я хотел, чтобы пользователи использовали любой алгоритм, который они хотят (или я хочу в будущем), поэтому я решил отделить часть алгоритма в архитектуре как плагин, который будет присоединен к основному запуску app @ app. Следовательно, любой пользователь может написать свой собственный алгоритм в качестве плагина и использовать его с моим приложением.
Постановка задачи:
Способ, которым я намереваюсь разработать это, состоит в том, чтобы каждый из алгоритмов, которые пользователь хочет использовать, был превращен в файл DLL и помещен в определенный каталог. И в начале, мое приложение будет искать все библиотеки DLL в этом каталоге и загружать их.
Мои вопросы:
(1) Что делать, если вредоносный код создается в виде DLL (и будет иметь те же функции, что и инфраструктура плагинов) и помещаться в каталог моих плагинов? В этом случае мое приложение будет считать, что это плагин, и выбирает его, и вызывает его функции, поэтому вредоносный код может легко уничтожить все мое приложение (в худшем случае мое приложение может стать вредоносным средством запуска кода !!!) .
(2) Является ли использование DLL единственным способом реализации шаблона проектирования плагинов? (Не только из-за страха перед злонамеренным плагином, но и из общего любопытства :))
(3) Я думаю, что многие программные продукты написаны с моделью плагинов для расширяемости, если так, как они защищаются от таких атак?
(4) В целом, что вы думаете о моем решении использовать модель плагина для расширяемости (как вы думаете, мне следует рассмотреть любые другие альтернативы?)
Спасибо
-MicroKernel:)