我正在为C ++应用程序实现某种插件系统。我称它为易失性。该插件是一个共享库*.so
。
不允许任何系统呼叫。
自从应用程序加载SO插件以来,它将继承所有权限和访问。我们不信任插件。
从给定的C ++插件源代码中编译带有特殊GCC / CLang标志的SO,例如--do-not-link-filesystem
,--do-not-link-pthread
。因此,如果该代码尝试访问系统资源,它将在编译时失败。这样可以提供最好的保修。
插件可以调用应用程序提供的接口。
STL <vector>
,<algorithm>
和<boost/template-only-headers>
应该仍然可用。
运行ApplicationHelper以在受限制的容器中加载Plugin.so或/和以具有受限权限的用户身份运行。 看起来很难