9

コンテキストは次のとおりです。

私は非常に大きな企業で働いています。ここには、多数の 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 がカスタム エラー ページを送信できない場合でも、少なくとも基本的なエラー ページには機密データが含まれません。

どうすればこれを行うことができますか?

ありがとう、

4

2 に答える 2

1

クローズブレースが言ったように、Websphereアプリケーションサーバーを構成して、スタックトレースの出力を防ぐ必要があります。

これを試してみてください:
com.ibm.ws.webcontainer.suppressHtmlRecursiveErrorOutputは、メッセージの内部ロギングを変更せずに、エラー テキストの HTML 出力を抑制する Web コンテナー カスタム プロパティです。

このカスタム プロパティを true に設定して、ユーザーへのエラー メッセージの HTML 出力を無効にし、ユーザーに 500 エラー コードを含む空白のページを表示することができます。

カスタム パラメーターは次の場所に配置する必要があります:アプリケーション サーバー>サーバー名>Web コンテナー>カスタム プロパティ>

于 2016-12-15T13:31:07.917 に答える
1

WAS の構成設定にアクセスできますか? その場合、httpd.conf の ErrorDocument ディレクティブで新しいデフォルトの基本エラー ページを設定できるはずです。

于 2012-07-04T16:03:46.523 に答える