24.3. 安全注意事项

输入主密码后,API将打开以访问身份验证数据库中的身份验证配置,类似于Firefox的工作方式。然而,在最初的实现中,没有定义任何阻止PyQGIS访问的墙。这可能会导致用户下载/安装恶意的PyQGIS插件或获得身份验证凭据访问权限的独立应用程序的问题。

最初发布特性的快速解决方案是不包括身份验证系统的大多数PyQGIS绑定。

另一个简单但并不健壮的解决方法是在 Settings ► Options ► Authentication (默认为“从不”):

"Allow Python access to authentication system"
Choices: [ confirm once per session | always confirm | always allow | never]

这样的选项设置需要保存在Python无法访问的位置,例如身份验证数据库,并使用主密码进行加密。

  • 另一种选择可以是跟踪用户特别拥有哪些插件

  • 允许访问身份验证系统,尽管可能很难推断实际进行调用的是哪个插件。

  • 沙盒插件,可能在它们自己的虚拟环境中,将减少从另一个授权插件对身份验证配置的‘交叉插件’黑客攻击。这可能也意味着限制跨插件通信,但可能仅限于第三方插件之间。

  • 另一个很好的解决方案是向经过审查的插件作者颁发代码签名证书。然后在加载时验证插件的证书。如果需要,用户还可以使用现有的证书管理对话框直接为与插件关联的证书设置不受信任的策略。

  • 或者,从Python访问敏感的身份验证系统数据

  • 永远不允许,只有使用QGIS核心窗口小部件或复制身份验证系统集成,才能允许插件与具有身份验证配置的资源一起工作,同时将主密码和身份验证配置加载在主应用程序的范围内。

同样的安全问题也适用于C++插件,尽管限制访问会更加困难,因为没有像使用Python那样可以简单地删除的函数绑定。

24.3.1. 限制

令人困惑的 licensing and exporting 适用与OpenSSL相关的问题。为了让Qt使用SSL证书,它需要访问OpenSSL库。根据Qt的编译方式,默认设置是在运行时动态链接到OpenSSL库(以避免导出限制)。

QCA遵循类似的策略,即链接到QCA不会受到任何限制,因为qca-ossl(Openssl)插件在运行时加载。Qca-ossl插件直接链接到openssl库。如果打包人员发布了插件,他们将需要确保符合任何OpenSSL链接限制。也许吧。我真的不知道。我不是律师。

在以下情况下,身份验证系统会安全地禁用自身 qca-ossl 在运行时找不到。