Manejo de datos no fiables
Consejos para manejar datos no fiables con Qt.
Datos no confiables
Los datosno confi ables son aquellos que provienen de fuentes cuya integridad la aplicación no puede garantizar. Ejemplos de datos no confiables son los datos proporcionados por el usuario, datos de red, datos generados, o datos que la aplicación no crea directamente. La gestión inadecuada de datos no fiables puede provocar el fallo de la aplicación, la exposición de datos privados y daños a los usuarios y al hardware. Por lo tanto, los desarrolladores deben estar atentos a la forma en que su código recibe y procesa los datos que no son de confianza.
La responsabilidad de garantizar que los datos son seguros recae, en última instancia, en la aplicación. Sin embargo, las aplicaciones pueden depender de que ciertas partes de Qt sean desarrolladas para procesar y validar datos de forma segura. Por ejemplo, los módulos de Qt pueden validar imágenes, manipular cadenas de forma segura, y pueden procesar paquetes de red entrantes. Qt considera este tipo de funcionalidades como críticas para la seguridad. Las API críticas para la seguridad se someten a un escrutinio y unas pruebas adicionales durante el desarrollo.
El Proyecto Qt tiene un extenso proceso para diseñar y probar la funcionalidad de Qt. Para más información sobre la política de seguridad de Qt, consulte Seguridad en Qt.
Mitigación de riesgos y vulnerabilidades con Qt
El uso de Qt disminuye muchos de los riesgos de procesar datos no fiables. Las siguientes secciones cubren aspectos del manejo de datos no confiables en aplicaciones Qt.
Validación de la Entrada del Usuario
La falta de una validación de entrada adecuada puede causar datos erróneos y comportamientos inesperados. Sin embargo, unas reglas de validación estrictas también pueden impedir que los usuarios introduzcan datos. Por ejemplo, impedir ciertos caracteres puede hacer que los usuarios introduzcan información incorrecta o contraseñas débiles.
Qt proporciona varios validadores para la entrada de datos por parte del usuario. Ver:
- QValidator y Ejemplo de edición de línea - Validadores C++ y ejemplo
- Qt Quick Validadores - Validadores QML
Inyección de comandos
Una vulnerabilidad de seguridad común es la ejecución maliciosa de comandos por un proceso externo. La ejecución de comandos a partir de datos no fiables puede dar lugar a la exposición de datos de usuario, el acceso a recursos privados y otras actividades maliciosas. Las aplicaciones también pueden combinar datos no fiables con datos fiables, contaminándolos.
Una mitigación común es validar y separar el texto de los posibles comandos ejecutables. Una lista explícita de comandos permitidos, utilizando la verificación tanto del lado del servidor como del lado del cliente, y un análisis cuidadoso de los datos también pueden ayudar a mitigar el riesgo. También se recomienda utilizar plugins y bibliotecas de confianza que ejecuten comandos del sistema en lugar de ejecutar scripts de texto.
Descodificación de imágenes
Las imágenes procedentes de fuentes no fiables pueden provocar caídas del sistema o reducir el rendimiento. Asegúrese de que la aplicación desinfecta las rutas de las imágenes, los tipos de imágenes y las extensiones de archivos antes de cargar o procesar imágenes. Además, las aplicaciones deben procesar imágenes grandes y formatos inesperados sin degradar el rendimiento o bloquearse.
Deserialización de datos
Trate los datos para deserialización como datos no fiables si proceden de fuera del límite de confianza, donde los datos deben someterse a un escrutinio adicional. Los datos serializados pueden estar corruptos o contener contenido malicioso. La deserialización de estos datos puede dar lugar a datos erróneos, bloqueos de la aplicación o ejecución de código malicioso. Comprueba la integridad de los contenidos, por ejemplo, utilizando técnicas de cifrado o hashing. Además, al deserializar los datos, gestione los errores con elegancia y evite caídas del sistema.
Para más información, consulte
Qt Qml y fuentes JavaScript
Qt Qml asume que el desarrollador de la aplicación proporciona todo el código y los recursos. QML es un lenguaje generalmente seguro en memoria con protección básica. Sin embargo, QML no tiene el concepto de dominios de privacidad separados. Esto significa que cualquier código, ya se cargue de forma remota o local, puede acceder a todos los datos de su ámbito.
Las aplicaciones QML deben cargar los recursos desde el sistema de archivos local o a través del sistema de recursos de Qt. Si es necesario utilizar la red, obtenga el recurso a través de HTTPS o dentro de una red de confianza.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.