2011-01-10 6 views
1

Wie kann ich vertrauliche Details in einer Java-Ausnahme verbergen? Ist es nur möglich, die Ausnahme mit einer anderen zu umhüllen?Einwickeln einer Ausnahme und Ausblenden sensibler Details

Wenn ja, wie genau verbirgt das die Ausnahme, denn wenn ich die exception @ debug-Zeit überwachen würde, wäre ich in der Lage, alle Informationen über die alte Ausnahme und die, mit der ich sie umgebe, zu sehen ?

BTW, das ist nicht wie ASP.NET, wo ich Response.Write ("") aufrufen kann, um eine freundliche Zeichenfolge auf der Webseite/Antwort-Stream zu schreiben. Dies ist ein Java-Plugin in einer Java-Web-basierten App (die Art, die Sie mit einem eingebauten Server installieren).

Dank

+0

Ich bin verwirrt, genau von wem willst du es verstecken? –

Antwort

2

Ich bin nicht sicher, dass Sie auf alle Sprachmechanismen oder VM Mechanismen zur Sicherung sensibler Daten gegen diese Art des Eindringens verlassen sollten. Wenn Sie den Debugger verwenden, könnten sie einfach einen Haltepunkt setzen, an dem die Ausnahme generiert wird, und die Daten sehen.

Das große Risiko besteht darin, dass eine nicht abgefangene Ausnahme zu einem Punkt fließen würde, an dem ein produktiver Benutzer sie sehen könnte, oder (oft genauso schlimm), wo sie in einer Protokollnachricht gespeichert werden könnte. Gute Beispiele dafür sind die Kommunikation mit einer Datenbank - viele Zeit die gesamte Abfrage gespeichert wird protokolliert, wenn es irgendeine Art von Fehler (auch eine einfache Zeitüberschreitung).

Aus diesen Gründen kann es am besten sein, sensible Daten nicht zuerst in der neuen Ausnahme zu speichern oder eine neue Ausnahme an dem niedrigsten Punkt zu erstellen, an dem die Ausnahme mit der sensiblen Komponente abgefangen werden soll Daten, und erstellen Sie eine, die die alte Ausnahme enthält und keine vertraulichen Daten bereitstellt.

Wenn Sie beispielsweise eine Ausnahme in einer Methode erstellen, die eine Abfrage mit vertraulichen Daten an die Datenbank übermittelt, speichern Sie den tatsächlichen Abfragetext nicht oder ersetzen Sie die Argumente (falls möglich) durch einen Hashwert. Auf diese Weise können Sie Wiederholungstäter finden, ohne den Dateninhalt zu belichten.

Wenn Sie eine Drittanbieter-Komponente verwenden, die Daten wie diese auf die Seite außerhalb Ihrer Kontrolle schreibt, sollten Sie die Verwendung dieses Plugins von Anfang an überdenken. Soweit Sie wissen, sind Sie in Ländern, in denen bestimmte Datenschutzrichtlinien gelten, immer noch haftbar, wenn Sie ein Tool eines Drittanbieters verwenden, das diesen Richtlinien nicht entspricht.

+0

Gute Antwort. Es wäre wahrscheinlich am besten, das zu tun, was Sie gesagt haben, und die sensiblen Details zu protokollieren. Das Problem besteht darin, dass Sie die Ausnahmebedingungsnachrichten analysieren müssen, um Details zu verbergen. – dotnetdev

+0

@dotnetdev: Ist dies eine Drittanbieterbibliothek, die keine semantisch bedeutsamen Ausnahmeklassen bereitstellt? In diesem Fall gibt es möglicherweise keine Auswahlmöglichkeit, es sei denn, Sie können mit dem Hashing der gesamten Nachrichtenfolge leben. Meine Erfahrung ist, dass irgendwo, auf dem Weg, jede Saite eine Chance hat, versehentlich gedruckt zu werden :) – Uri

Verwandte Themen