CWE ID: 544
Name: Missing Standardized Error Handling Mechanism
Das Produkt verwendet keine standardisierte Methode zur Fehlerbehandlung im gesamten Code, was zu inkonsistenter Fehlerbehandlung und daraus resultierenden Schwachstellen führen kann.
Wenn das Produkt Fehlermeldungen einzeln und isoliert behandelt, ist dies wahrscheinlich mit inkonsistenter Fehlerbehandlung verbunden. Die Ursachen von Fehlern können verloren gehen. Zudem können unbeabsichtigt detaillierte Informationen über die Ursachen eines Fehlers an den User zurückgegeben werden.
Effektivität: Unknown
Beschreibung: Hier ist eine Strategie zur Behandlung von Fehlern unterschiedlicher Schweregrade, unter Verwendung von Sprachfunktionen oder externen Paketen, sowie definierte Coding Standards:
Strategie zur Fehlerbehandlung nach Schweregrad
Die Strategie basiert auf der Kategorisierung von Fehlern in verschiedene Schweregrade, um eine angemessene Reaktion zu gewährleisten. Wir definieren folgende Kategorien:
Technologie und API
Wir nutzen ein etabliertes Logging-Framework, wie z.B. log4j2
(Java), logging
(Python) oder ein vergleichbares Package in der verwendeten Programmiersprache. Dieses Framework bietet eine einfache API für das Protokollieren von Ereignissen mit verschiedenen Schweregraden.
logFatal(message, exception)
: Protokolliert einen fatalen Fehler. Die Anwendung sollte in diesem Fall einen kontrollierten Shutdown durchführen.logHighSeverity(message, exception)
: Protokolliert einen hochkritischen Fehler. Eine Benachrichtigung an das Operations-Team sollte erfolgen.logMediumSeverity(message, exception)
: Protokolliert einen mittelschweren Fehler. Der Benutzer sollte eine informative Fehlermeldung erhalten.logBasic(message)
: Protokolliert ein grundlegendes Ereignis. Diese Ereignisse werden für die Überwachung und das Debugging verwendet.log
-Methode protokolliert werden. Die Stacktrace sollte ebenfalls protokolliert werden, um die Fehlerursache zu erleichtern.Coding Standards
try-catch
(oder äquivalenten) Blöcken eingeschlossen werden.Beispiel (Java):
try {
// Code, der einen Fehler verursachen kann
databaseConnection.executeQuery("SELECT * FROM users");
} catch (SQLException e) {
logHighSeverity("Fehler beim Abfragen der Datenbank", e);
// Benachrichtigung an das Operations-Team
// Möglicherweise eine alternative Lösung anbieten
}
Zusätzliche Überlegungen:
Diese Strategie zielt darauf ab, eine robuste und wartbare Fehlerbehandlung zu gewährleisten, die sowohl die Benutzererfahrung verbessert als auch die Fehlerbehebung erleichtert.