QT Custom Plugin - Пути повышения безопасности
У меня есть этот простой интерфейс плагина для моего пользовательского приложения.
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++ может сделать что-то подобное.
1 ответ
Это по существу невозможно без запуска какой-либо среды выполнения в песочнице.
Почему вы беспокоитесь о вредоносных плагинах? Эти плагины приходят из Интернета? Вы беспокоитесь о том, что ваши пользователи будут загружать и запускать случайное дерьмо? Если они это сделают, то, скорее всего, они делают это уже со всем остальным, и ваше программное обеспечение должно меньше всего беспокоить вас. Увы, каноническое решение предназначено для вашего программного обеспечения для принудительного использования подписей плагинов, а для вашего бизнеса - для процесса проверки и подписания плагинов или, по крайней мере, для принудительного применения стандартных подписей разработчиков MS в библиотеках плагинов.
Вы в основном не позволяете пользователю использовать ваше программное обеспечение по своему усмотрению. Как пользователь, мне не нравятся подобные вещи.