我的自定义应用程序有这个简单的插件界面。
plugininterface.h:
#ifndef PLUGININTERFACE_H
#define PLUGININTERFACE_H
#include <QString>
class PluginInterface
{
public:
virtual QString Author() const = 0;
virtual QString Description() const = 0;
virtual bool Load() const = 0;
virtual bool Unload() const = 0;
};
Q_DECLARE_INTERFACE( PluginInterface, "MyPluginInterface" )
#endif // PLUGININTERFACE_H
现在,这允许用户为我的程序制作插件。但是我担心可能会被放入插件的可能的恶意代码。我认为如果有一种方法可以确保,无论插件内部发生什么,都应该:
如果QT没有开箱即用的解决方案,那么我猜一个解决方案可能是黑名单或白名单命名空间和库。如果这是可能的。希望有像我这样的QT / C ++新手可以做的事情。
答案 0 :(得分:1)
如果没有启动某种沙盒运行时,这基本上是不可能的。
为什么要担心恶意插件?这些插件来自互联网吗?您是否担心您的用户会下载随机垃圾并运行它?如果他们这样做,那么很可能他们已经完成了所有其他事情,而您的软件应该是您最不担心的事情。唉,规范的解决方案是让您的软件强制执行插件签名,并让您的企业有一个审查和签署插件的过程,或者至少在插件DLL上强制执行标准的MS开发人员签名。
您基本上阻止用户根据自己的意愿使用您的软件。作为用户,我不喜欢那种东西。