【问题标题】:Is it possible to block network access for a shared/dynamic library?是否可以阻止共享/动态库的网络访问?
【发布时间】:2024-04-14 05:45:01
【问题描述】:

我正在学习如何创建APIs 以使我的应用程序可插件化,我在C++Qt 中创建了一个演示应用程序,用户可以在其中向应用程序添加例如新按钮.

作为一项安全功能,我希望能够为应用程序用户提供一种方法来关闭他们希望这样做的插件的网络访问。例如,如果有人为我的应用程序创建了一个闭源插件,我想让用户阻止通过该插件执行的任何网络活动。

我也想在不让插件在不同进程中运行的情况下这样做。

所以我的问题是:是否可以关闭应用程序动态链接到的共享库的网络访问而不关闭整个应用程序的网络访问?

【问题讨论】:

    标签: c++ qt sockets tcp shared-libraries


    【解决方案1】:

    您在标题中提出的问题是不可能的,但您可以为插件网络访问创建一个 API,该 API 在每个插件基础上具有阻止功能。这意味着您将不会直接使用 Qt 的网络类,而是围绕它们创建包装器,以检查该特定插件是否具有权限,如果没有,则在发出网络命令时什么也不做。这也意味着您必须向可能为您的应用程序编写插件的人提供该 API,并禁止他们直接使用 Qt 的网络类,而是使用您的包装器。

    【讨论】:

    • 是的,但即便如此,没有人可以阻止插件创建者使用 qt 类或 posix/winapi 网络功能来打开套接字和发送/接收,对吧?
    • @JacobKrieg 对。你必须对插件开发有严格的要求,例如,提供一个只读的项目模板,它不能链接到任何外部库,甚至是 Qt 的网络,这样插件开发者就不得不使用你的托管包装器。
    • 我明白了。谢谢!
    最近更新 更多