Umgang mit nicht vertrauenswürdigen Daten
Hinweise zum Umgang mit nicht vertrauenswürdigen Daten mit Qt.
Nicht vertrauenswürdige Daten
Nicht vertrauenswürdige Daten sind Daten, die aus Quellen stammen, deren Integrität die Anwendung nicht garantieren kann. Beispiele für nicht vertrauenswürdige Daten sind vom Benutzer zur Verfügung gestellte Daten, Netzwerkdaten, generierte Daten oder Daten, die nicht direkt von der Anwendung erzeugt wurden. Der unsachgemäße Umgang mit nicht vertrauenswürdigen Daten kann zum Absturz der Anwendung, zur Preisgabe privater Daten und zu Schäden für Benutzer und Hardware führen. Daher müssen Entwickler darauf achten, wie ihr Code nicht vertrauenswürdige Daten empfängt und verarbeitet.
Die Verantwortung dafür, dass die Daten sicher sind, liegt letztlich bei der Anwendung. Anwendungen können sich jedoch darauf verlassen, dass bestimmte Teile von Qt entwickelt werden, um Daten sicher zu verarbeiten und zu validieren. Qt-Module können zum Beispiel Bilder validieren, Strings sicher manipulieren und eingehende Netzwerkpakete verarbeiten. Qt betrachtet diese Arten von Funktionalität als sicherheitskritisch. Sicherheitskritische APIs werden während der Entwicklung besonders sorgfältig geprüft und getestet.
Das Qt-Projekt verfügt über ein umfassendes Verfahren zum Entwerfen und Testen von Qt-Funktionen. Weitere Informationen über die Sicherheitsrichtlinien von Qt finden Sie unter Sicherheit in Qt.
Verringerung von Risiken und Schwachstellen mit Qt
Die Verwendung von Qt verringert viele der Risiken, die mit der Verarbeitung nicht vertrauenswürdiger Daten verbunden sind. Die folgenden Abschnitte behandeln Aspekte des Umgangs mit nicht vertrauenswürdigen Daten in Qt-Anwendungen.
Validierung von Benutzereingaben
Das Fehlen einer angemessenen Eingabevalidierung kann zu fehlerhaften Daten und unerwartetem Verhalten führen. Strenge Validierungsregeln können jedoch auch Benutzer an der Eingabe von Daten hindern. Das Verhindern bestimmter Zeichen kann zum Beispiel dazu führen, dass Benutzer falsche Informationen oder schwache Passwörter eingeben.
Qt bietet mehrere Validatoren für Benutzereingaben. Siehe:
- QValidator und Line Edits Example - C++ Validatoren und Beispiel
- Qt Quick Prüfer - QML-Prüfer
Befehlsinjektion
Eine häufige Sicherheitslücke ist die böswillige Ausführung von Befehlen durch einen externen Prozess. Die Ausführung von Befehlen aus nicht vertrauenswürdigen Daten kann zur Preisgabe von Benutzerdaten, zum Zugriff auf private Ressourcen und zu anderen bösartigen Aktivitäten führen. Anwendungen können auch nicht vertrauenswürdige Daten mit vertrauenswürdigen Daten kombinieren, wodurch die Daten verfälscht werden.
Eine gängige Abhilfemaßnahme besteht darin, den Text zu validieren und von möglichen ausführbaren Befehlen zu trennen. Eine explizite Liste zulässiger Befehle, die sowohl server- als auch clientseitig überprüft wird, und eine sorgfältige Analyse der Daten können ebenfalls zur Risikominderung beitragen. Es wird auch empfohlen, vertrauenswürdige Plugins und Bibliotheken zu verwenden, die Systembefehle anstelle von Textskripten ausführen.
Dekodierung von Bildern
Bilder aus nicht vertrauenswürdigen Quellen können zu Systemabstürzen oder Leistungseinbußen führen. Stellen Sie sicher, dass die Anwendung Bildpfade, Bildtypen und Dateierweiterungen bereinigt, bevor sie Bilder lädt oder verarbeitet. Außerdem sollten Anwendungen große Bilder und unerwartete Formate verarbeiten, ohne die Leistung zu beeinträchtigen oder abzustürzen.
Deserialisierung von Daten
Behandeln Sie Daten, die deserialisiert werden sollen, als nicht vertrauenswürdige Daten, wenn sie von außerhalb der Vertrauensgrenze kommen, wo die Daten einer zusätzlichen Prüfung unterzogen werden müssen. Die serialisierten Daten können beschädigt sein oder bösartige Inhalte enthalten. Die Deserialisierung dieser Daten kann zu fehlerhaften Daten, Anwendungsabstürzen oder der Ausführung von bösartigem Code führen. Überprüfen Sie die Integrität der Inhalte, indem Sie beispielsweise Verschlüsselungs- oder Hashing-Techniken verwenden. Behandeln Sie bei der Deserialisierung von Daten außerdem Fehler angemessen und verhindern Sie Systemabstürze.
Für weitere Informationen, siehe
Qt Qml und JavaScript-Quellen
Qt Qml geht davon aus, dass der Anwendungsentwickler den gesamten Code und alle Ressourcen bereitstellt. QML ist eine allgemein speichersichere Sprache mit grundlegendem Schutz. QML verfügt jedoch nicht über das Konzept der getrennten Datenschutzbereiche. Das bedeutet, dass jeder Code, ob remote oder lokal geladen, auf alle Daten in seinem Bereich zugreifen kann.
QML-Anwendungen sollten Ressourcen aus dem lokalen Dateisystem oder über das Ressourcensystem von Qt laden. Wenn das Netzwerk benötigt wird, sollte die Ressource über HTTPS oder innerhalb eines vertrauenswürdigen Netzwerks abgerufen werden.
© 2025 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.