0

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

插件接口.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. 无法访问其他程序。(无内存读/写操作)

如果 QT 没有开箱即用的解决方案,那么我想一种解决方案可能是将命名空间和库列入黑名单或白名单。如果这甚至是可能的。希望像我这样的 QT/C++ 新手能做些什么。

4

1 回答 1

1

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

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

您基本上是在阻止用户按照他们认为合适的方式使用您的软件。作为用户,我不喜欢这种东西。

于 2015-07-28T17:45:15.947 回答