This post originated from an RSS feed registered with .NET Buzz
by -.
Original Post: Exception Handling und Security
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Zum Exception Handling habe ich bereits hier, hier und hier berichtet. Was aber bis dato gefehlt hat, war eine Aussage zum Thema Sicherheit bei der Behandlung von Ausnahmen.
Was also hat das Behandeln von Ausnahmen mit Sicherheit zu tun? In den meisten Fällen wird bei einer Exception der Inhalt der Eigenschaft Message zurückgegeben und in der Hauptanwendung (egal ob Windows Forms, Web, WPF) zur Anzeige gebracht. Dadurch werden jedoch in manchen Fällen Daten zum Vorschein gebracht, die besser im Verborgenen bleiben sollten. Nehmen wir das Beispiel Webanwendung. Gehen wir weiters davon aus, dass diese eine Verbindung zu einer Datenbank benötigt. Nun wird hier im System ein ConnectionString hinterlegt (natürlich gilt es auch diesen abzusichern). Nun kann folgendes Problem auftreten:
Die Anmeldung auf den Datenbank-Server schlägt fehl. Daraufhin wird eine Exception geworfen, welche dann im User-Interface angezeigt wird (entsweder per eigener Fehlerseite oder überhaupt als Exception). Aus dem Message-Text ist nun ersichtlich, dass die Anmeldung scheitterte und mit welchem User die Anmeldung versucht wurde.
Ein potentieller Angreifer hat nun ein leichteres Spiel, da er einen User für die Datenbank definitiv kennt.
Dies ist nur ein einfaches Beispiel. Aus diesem Grunde sollten Exception-Messages niemals direkt an den User weitergegeben werden. Folgende Vorgehensweise ist hier empfohlen:
1. Jede Exception abfangen
2. Exceptions in eine Log-Datei loggen (Bei Webanwendungen sollte die Log-Datei in ein Verzeichnis geschrieben werden, welches nicht über das Web zugänglich ist)
3. Fehlertexte, die an den User gehen sollten unbedingt zuvor angepasst werden. D.h. ein eigener Wortlaut muss deklariert werden.
Schließlich bleibt noch zu erwähnen, dass dem User nicht jeder Fehler sichtbar gemacht werden muss. Mit vielen Fehlern kann der Unser ohnehin nichts anfangen und sie verwirren ihn nur. Ergo immer überlegen, ob die Benachrichtigung im speziellen Fall sinnvoll ist oder nicht.