コンテキストは次のとおりです。
私は非常に大きな企業で働いています。ここには、多数の WebSphere Application Server クラスターがあり、それぞれが多数の Java EE Web アプリケーションを実行しています。これらのアプリケーションのほとんど (すべてではない) には、予期しない例外が発生したときにカスタム エラー ページを表示するための特別なディレクティブが web.xml に含まれています。次に例を示します。
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
そうすることで、もちろん、お客様にわかりやすいエラー ページを表示することを目指していますが、さらに、通常は標準の http 500 エラー ページに含まれるスタック トレースを非表示にすることを主な目的としています。
ご存知のように、これらのスタック トレースには、パッケージ名、クラス名、さらにはメソッド名など、多くの機密データが含まれています。最悪の場合、これらのスタック トレースに SQL 例外が含まれていることがあり、多くの場合、どのデータベース サーバー ソフトウェアが使用されているかが明らかになります。最悪の場合、これらのスタックトレースにはファイルとフォルダーのパスが含まれている場合があり、これにより、WebSphere Application Server が実行されているオペレーティング システムのファミリが明らかになる可能性があります。
これらのスタック トレースによって明らかになる可能性のある他のすべての機密データについて言及する必要がありますか? (ユーザー名、ポート番号、IP アドレス、コンピューター/サーバー名、JNDI オブジェクトの名前…)
したがって、ここで大きな驚きはありません。すべての大企業は、これらのスタック トレースを顧客に隠す必要があります。
しかし、ここに私たちの問題があります:
カスタム エラー ページが web.xml ファイルで適切に構成されていても、WebSphere は基本的なエラー ページを顧客の Web ブラウザに送信する場合があります。なぜ WebSphere がそうするのか、私はよく理解しています。例として、http 応答のヘッダーが既にコミットされている場合、WebSphere はそのバッファーをリセットしてカスタム エラー ページを送信することができず、基本的なエラー ページを送信する以上のことはできないことがわかっています。
これが私の質問です:
(1) 基本的なエラー ページにスタック トレースが含まれないように WebSphere を構成することはできますか? これにより、何らかの技術的な理由で WebSphere がカスタム エラー ページを送信できない場合でも、少なくとも基本的なエラー ページには機密データが含まれません。
どうすればこれを行うことができますか?
ありがとう、