9

Ecco il contesto:ambiente di produzione - pagina di errore http 500 - no stacktrace per favore

Io lavoro per un'impresa molto grande. Qui, abbiamo molti cluster di WebSphere Application Server, ognuno con molte applicazioni Web Java EE. La maggior parte (ma non tutte) di queste applicazioni contengono direttive speciali nel loro web.xml per visualizzare una pagina di errore personalizzata quando si verifica un'eccezione imprevista. Ecco un esempio:

<error-page> 
    <error-code>500</error-code> 
    <location>/500.jsp</location> 
</error-page> 

Facendo questo, naturalmente, ci proponiamo di mostrare una pagina di errore amichevole per i nostri clienti, ma inoltre, abbiamo principalmente proponiamo di nascondere i stacktraces che di solito sono inclusi nelle pagine di errore standard http 500 .

Come dovresti sapere, questi stacktraces includono molti dati sensibili come i nomi dei pacchetti, i nomi delle classi e persino i nomi dei metodi. Peggio, a volte, questi stacktrace contengono eccezioni SQL, che spesso rivelano quale database viene utilizzato il software server. Ancora peggio, a volte queste stacktrace contengono percorsi di file e cartelle che, a loro volta, possono rivelare su quale famiglia di sistemi operativi viene eseguito il nostro WebSphere Application Server.

Devo menzionare tutti gli altri dati ancora più sensibili che possono essere rivelati da questi stacktraces? (Nome utente, numeri di porta, indirizzi IP, nomi di computer/server, nomi di oggetti JNDI ...)

Quindi, nessuna grande sorpresa qui, ogni grande impresa ha bisogno di nascondere questi stacktraces ai propri clienti.

Ma, ecco il nostro problema:

A volte, anche con una pagina di errore personalizzata ben configurato nel file web.xml, WebSphere invia la pagina di errore di base al browser web dei clienti. Capisco molto bene perché WebSphere lo faccia. Ad esempio, so che quando le intestazioni della risposta http sono già state commesse, WebSphere non può resettare il proprio buffer per inviare la pagina di errore personalizzata, e quindi non può fare di meglio che inviare una pagina di errore di base.

Ecco la mia domanda:

(1) E 'possibile configurare WebSphere in modo che mai e poi mai include qualsiasi stacktrace nella sua pagina di errore di base? In questo modo, anche quando, per qualche motivo tecnico, WebSphere non può inviare la nostra pagina di errore personalizzata, almeno la pagina di errore di base non includerà alcun dato sensibile.

Come possiamo fare questo?

Grazie,

+0

Non può rispondere alla tua domanda specifica sulla disabilitazione l'analisi dello stack, ma non si dispone di un server web o proxy parte di WebSphere dove puoi impostare una pagina di errore lì? – dbreaux

+0

Quando ottieni la pagina di errore predefinita stai usando un server web di fronte a WAS e passando attraverso il plugin http? – ams

+0

Utilizziamo Microsoft Internet Information Server davanti ai nostri server WebSphere e utilizziamo il plug-in WebSphere (un filtro ISAPI) per inoltrare le richieste HTTP ai nostri server WebSphere. Inoltre, usiamo la console di amministrazione di WebSphere per generare i nostri file "plugin-cfg.xml". Non possiamo modificare questi file (perché se li modifichiamo per modificarli, li reeditiamo costantemente per mantenere le nostre modifiche). Pertanto, se sono necessarie alcune modifiche in questi file, la console di gestione di WebSphere includerà queste modifiche durante la generazione dei file "plugin-cfg.xml". – closingBrace

risposta

1

Non si ha accesso alle impostazioni di configurazione del ERA? In tal caso dovresti essere in grado di impostare una nuova pagina di errore di base predefinita nella direttiva ErrorDocument in httpd.conf.

+0

Per quanto ne so, "httpd.conf" è relativo a Apache/IHS (IBM HTTP Server) correlato ... Utilizziamo Microsoft Information Server come server Web davanti ai nostri server WebSphere. Sai se questo file (httpd.conf) è coinvolto anche quando WebSphere è dietro Internet Information Server? – closingBrace

1

Come detto in chiusura, è necessario impedire la stampa dello stacktrace configurando il server di applicazioni Websphere.

Prova questo:
com.ibm.ws.webcontainer.suppressHtmlRecursiveErrorOutput è web di proprietà contenitore personalizzato per eliminare l'output HTML del testo di errore, senza cambiare la registrazione interna del messaggio.

È possibile impostare questa proprietà personalizzata su true per disabilitare l'output HTML del messaggio di errore all'utente e presentare all'utente una pagina vuota con un codice di errore 500.

parametri personalizzati devono essere collocati in: Application Server> proprietà nome_server> Contenitore Web> Custom>

Problemi correlati