QT自定义插件 - 提高安全性的方法

时间:2015-07-28 17:42:17

标签: c++ qt security qt5 qtplugin

我的自定义应用程序有这个简单的插件界面。

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

现在,这允许用户为我的程序制作插件。但是我担心可能会被放入插件的可能的恶意代码。我认为如果有一种方法可以确保,无论插件内部发生什么,都应该:

  1. 不允许访问互联网。
  2. 仅在其设计的程序目录中运行。
  3. 无法访问其他程序。 (没有内存读/写操作)
  4. 如果QT没有开箱即用的解决方案,那么我猜一个解决方案可能是黑名单或白名单命名空间和库。如果这是可能的。希望有像我这样的QT / C ++新手可以做的事情。

1 个答案:

答案 0 :(得分:1)

如果没有启动某种沙盒运行时,这基本上是不可能的。

为什么要担心恶意插件?这些插件来自互联网吗?您是否担心您的用户会下载随机垃圾并运行它?如果他们这样做,那么很可能他们已经完成了所有其他事情,而您的软件应该是您最不担心的事情。唉,规范的解决方案是让您的软件强制执行插件签名,并让您的企业有一个审查和签署插件的过程,或者至少在插件DLL上强制执行标准的MS开发人员签名。

您基本上阻止用户根据自己的意愿使用您的软件。作为用户,我不喜欢那种东西。