24.3. Consideraciones de Seguridad
Una vez que se ingresa la contraseña maestra, la API está abierta para acceder a las configuraciones de autenticación en la base de datos de autenticación, similar a cómo funciona Firefox. Sin embargo, en la implementación inicial, no se ha definido ningún muro contra el acceso a PyQGIS. Esto puede generar problemas en los que un usuario descarga / instala un complemento PyQGIS malicioso o una aplicación independiente que obtiene acceso a las credenciales de autenticación.
La solución rápida para el lanzamiento inicial de la función es simplemente no incluir la mayoría de los enlaces PyQGIS para el sistema de autenticación.
Otra solución simple, aunque no robusta, es agregar un cuadro combinado en
(defaults to «never»):"Allow Python access to authentication system"
Choices: [ confirm once per session | always confirm | always allow | never]
La configuración de dicha opción debería guardarse en una ubicación no accesible para Python, p.ej. la base de datos de autenticación, y encriptada con la contraseña maestra.
Otra opción puede ser rastrear qué complementos tiene el usuario específicamente
se le permite acceder al sistema de autenticación, aunque puede ser difícil deducir qué complemento está realmente haciendo la llamada.
Los complementos de sandboxing, posiblemente en sus propios entornos virtuales, reducirían la piratería “cross-plugin” de configuraciones de autenticación desde otro complemento que esté autorizado. Esto también podría significar limitar la comunicación entre complementos, pero tal vez solo entre complementos de terceros.
Otra buena solución es emitir certificados de firma de código a autores de complementos investigados. Luego valide el certificado del complemento al cargarlo. Si es necesario, el usuario también puede establecer directamente una política no confiable para el certificado asociado con el complemento utilizando los cuadros de diálogo de administración de certificados existentes.
Alternativamente, acceso a datos confidenciales del sistema de autenticación desde Python
nunca podría permitirse, y solo el uso de widgets centrales QGIS, o la duplicación de las integraciones del sistema de autenticación, permitiría que el complemento funcione con recursos que tienen una configuración de autenticación, mientras se mantiene la contraseña maestra y la carga de configuración de autenticación en el ámbito de la aplicación principal.
Los mismos problemas de seguridad se aplican a los complementos deC ++, aunque será más difícil restringir el acceso, ya que no existe un enlace de función que se elimine simplemente como con Python.
24.3.1. Limitaciones
Los confusos problemas licensing and exporting asociado con OpenSSL se aplica. Para que Qt funcione con certificados SSL, necesita acceso a las bibliotecas OpenSSL. Dependiendo de cómo se compiló Qt, el valor predeterminado es vincular dinámicamente a las bibliotecas OpenSSL en tiempo de ejecución (para evitar las limitaciones de exportación).
QCA sigue una táctica similar, según la cual el enlace a QCA no incurre en restricciones, ya que el complemento qca-ossl (OpenSSL) se carga en tiempo de ejecución. El complemento qca-ossl está directamente vinculado a las librerías OpenSSL. Los empaquetadores serían los que necesitan asegurarse de que se cumplan las restricciones de enlace de OpenSSL, si envían el complemento. Tal vez. Realmente no lo se. No soy abogado
El sistema de autenticación se deshabilita de forma segura cuando qca-ossl
no se encuentra en tiempo de ejecución.