production environment - http 500 Fehlerseite - bitte kein StackTrace

9

Hier ist der Kontext:

Ich arbeite für ein sehr großes Unternehmen. Hier haben wir viele WebSphere Application Server-Cluster, von denen jeder viele Java EE-Webanwendungen ausführt. Die meisten (aber nicht alle) dieser Anwendungen enthalten spezielle Anweisungen in ihrer Datei "web.xml", um eine benutzerdefinierte Fehlerseite anzuzeigen, wenn eine unerwartete Ausnahme auftritt. Hier ist ein Beispiel:

%Vor%

Damit möchten wir unseren Kunden natürlich eine freundliche Fehlerseite zeigen, aber vor allem wollen wir die Stacktraces verbergen, die normalerweise in Standard-HTTP-500-Fehlerseiten enthalten sind.

Wie Sie wissen sollten, enthalten diese Stacktraces viele sensible Daten wie Paketnamen, Klassennamen und sogar Methodennamen. Am schlimmsten ist, dass diese Stacktraces manchmal SQL-Ausnahmen enthalten, die oft aufzeigen, welche Datenbankserver-Software verwendet wird. Diese Stacktraces enthalten manchmal auch Datei- und Ordnerpfade, aus denen wiederum hervorgeht, auf welcher Betriebssystemfamilie unser WebSphere Application Server ausgeführt wird.

Muss ich all die anderen noch sensibleren Daten erwähnen, die durch diese Stacktraces aufgedeckt werden können? (Benutzernamen, Portnummern, IP-Adressen, Computer- / Servernamen, Namen von JNDI-Objekten ...)

Also, keine große Überraschung hier, jedes große Unternehmen muss diese Stacktraces für seine Kunden verstecken.

Aber, hier ist unser Problem:

Auch wenn eine benutzerdefinierte Fehlerseite in der Datei "web.xml" ordnungsgemäß konfiguriert ist, sendet WebSphere gelegentlich die grundlegende Fehlerseite an den Webbrowser des Kunden. Ich verstehe sehr gut, warum WebSphere das tut. Als Beispiel weiß ich, dass WebSphere, wenn die Header der HTTP-Antwort bereits festgeschrieben sind, seinen Puffer nicht zurücksetzen kann, um die benutzerdefinierte Fehlerseite zu senden, und dann nicht besser ist, als eine grundlegende Fehlerseite zu senden.

Hier ist meine Frage:

(1) Ist es möglich, WebSphere so zu konfigurieren, dass es niemals einen Stacktrace auf seiner Basisfehlerseite enthält? Auch wenn WebSphere aus technischen Gründen keine benutzerdefinierte Fehlerseite senden kann, enthält die grundlegende Fehlerseite daher keine vertraulichen Daten.

Wie können wir das machen?

Danke,

    
closingBrace 28.06.2012, 19:05
quelle

2 Antworten

1

Haben Sie Zugriff auf die Konfigurationseinstellungen des WAS? In diesem Fall sollten Sie in der ErrorDocument-Direktive in der httpd.conf eine neue Standard-Standardfehlerseite festlegen können.

    
gebuh 04.07.2012 16:03
quelle
1

Wie closingBrace sagt, sollten Sie das Drucken von StackTrace verhindern, indem Sie Ihren Websphere-Anwendungsserver konfigurieren.

Versuchen Sie Folgendes:
com.ibm.ws.webcontainer.suppressHtmlRecursiveErrorOutput ist eine benutzerdefinierte Eigenschaft des Web-Containers, um die HTML-Ausgabe des Fehlertextes zu unterdrücken, ohne die interne Protokollierung der Nachricht zu ändern.

Sie können diese benutzerdefinierte Eigenschaft auf "true" setzen, um die HTML-Ausgabe der Fehlermeldung für den Benutzer zu deaktivieren und dem Benutzer eine leere Seite mit einem 500-Fehlercode zu präsentieren.

Benutzerdefinierte Parameter sollten wie folgt platziert werden: Anwendungsserver & gt; Servername & gt; Web Container & gt; Benutzerdefinierte Eigenschaften & gt;

    
Patrycja Rychlik 15.12.2016 13:31
quelle