Manipuler des données non fiables
Conseils sur la gestion des données non fiables avec Qt.
Données non fiables
Lesdonnées non fiables sont des données provenant de sources dont l'intégrité ne peut être garantie par l'application. Les données fournies par l'utilisateur, les données réseau, les données générées ou les données que l'application ne crée pas directement sont des exemples de données non fiables. Une mauvaise manipulation des données non fiables peut entraîner des pannes d'application, l'exposition de données privées et des dommages aux utilisateurs et au matériel. Les développeurs doivent donc être vigilants quant à la manière dont leur code reçoit et traite les données non fiables.
La responsabilité de garantir la sécurité des données incombe en dernier ressort à l'application. Cependant, les applications peuvent dépendre de certaines parties de Qt développées pour traiter et valider les données en toute sécurité. Par exemple, les modules de Qt Network peuvent valider des images, manipuler des chaînes de caractères en toute sécurité et traiter des paquets réseau entrants. Qt considère ces types de fonctionnalités comme critiques pour la sécurité. Les API critiques sur le plan de la sécurité font l'objet d'un examen et de tests supplémentaires au cours de leur développement.
Le projet Qt Test a mis en place un processus complet de conception et de test des fonctionnalités de Qt. Pour plus d'informations sur la politique de sécurité de Qt, voir Security in Qt.
Atténuer les risques et les vulnérabilités avec Qt
L'utilisation de Qt réduit de nombreux risques liés au traitement de données non fiables. Les sections suivantes couvrent les aspects du traitement des données non fiables dans les applications Qt.
Validation des entrées de l'utilisateur
L'absence de validation correcte des entrées peut entraîner des données erronées et des comportements inattendus. Cependant, des règles de validation strictes peuvent également empêcher les utilisateurs de saisir des données. Par exemple, l'interdiction de certains caractères peut conduire les utilisateurs à saisir des informations incorrectes ou des mots de passe faibles.
Qt fournit plusieurs validateurs pour les entrées utilisateur. Voir :
- QValidator Exemple d'édition de lignes - Validateurs C++ et exemple
- Qt Quick Validateurs - Validateurs QML
Injection de commandes
L'exécution de commandes malveillantes par un processus externe constitue une faille de sécurité courante. L'exécution de commandes à partir de données non fiables peut conduire à l'exposition de données utilisateur, à l'accès à des ressources privées et à d'autres activités malveillantes. Les applications peuvent également combiner des données non fiables avec des données fiables, ce qui a pour effet d'altérer les données.
Une mesure d'atténuation courante consiste à valider et à séparer le texte des éventuelles commandes exécutables. Une liste explicite de commandes autorisées, utilisant une vérification à la fois côté serveur et côté client, et une analyse minutieuse des données peuvent également contribuer à atténuer le risque. Il est également recommandé d'utiliser des plugins et des bibliothèques de confiance qui exécutent des commandes système au lieu d'exécuter des scripts textuels.
Décodage des images
Les images provenant de sources non fiables peuvent provoquer des pannes du système ou une baisse des performances. Veillez à ce que l'application assainisse les chemins d'accès aux images, les types d'images et les extensions de fichiers avant de charger ou de traiter les images. En outre, les applications doivent traiter les images de grande taille et les formats inattendus sans dégrader les performances ou se bloquer.
Désérialisation des données
Traitez les données à désérialiser comme des données non fiables si elles proviennent de l'extérieur de la zone de confiance, où les données doivent faire l'objet d'un examen plus approfondi. Les données sérialisées peuvent être corrompues ou contenir un contenu malveillant. La désérialisation de ces données peut entraîner des données erronées, des pannes d'application ou l'exécution de codes malveillants. Vérifiez l'intégrité du contenu, par exemple en utilisant des techniques de cryptage ou de hachage. En outre, lors de la désérialisation des données, traitez les erreurs avec élégance et évitez les pannes de système.
Pour plus d'informations, voir
- Qt Serialization
- Corruption and Security à l'adresse QDataStream.
Qt Qml Les sources de Qt et de JavaScript
Qt Qml part du principe que le développeur de l'application fournit l'ensemble du code et des ressources. QML est un langage généralement sûr pour la mémoire et doté d'une protection de base. Cependant, QML ne dispose pas du concept de domaines de confidentialité distincts. Cela signifie que tout code, qu'il soit chargé à distance ou localement, peut accéder à toutes les données dans son champ d'application.
Les applications Qtml devraient charger des ressources à partir du système de fichiers local ou via le système de ressources de Qtt. S'il est nécessaire d'utiliser le réseau, il convient de récupérer la ressource via HTTPS ou au sein d'un réseau de confiance.
© 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.