2009-10-05 11 views
10

デフォルトでは、Tomcatのエラーページには、Tomcatの存在と要求を処理するコンテナの正確なバージョンの両方が示されます。これは開発にとってはいいですが、プロダクションのコンテキストでは、この情報は潜在的なセキュリティホールであり、無効にするとよいでしょう。Tomcatエラーページの情報開示を減らす

このように、Tomcatのデフォルトのエラーページを完全に抑制するためには、(最も単純で包括的なように)ベストなソリューションが何であるか知りたいと思います。私は<error-page>オプションをweb.xmlで認識していますが、同じ代替エラーページを何度も(処理したいそれぞれの応答コードごとに)リストしなければならないことと、これはおそらく100%堅牢ではないとして私を襲う;攻撃者が明示的にリストされていないエラーコードを返すと、デフォルトのエラーページが表示されます。

ユニバーサルカスタムエラーページを設定する単純なオプション、またはデフォルトのエラーページにエラーコードと共にHTMLを送信しないようにフラットアウトするのが理想的です。これらのオプションのどちらも可能でない場合、私はこの機能を実装する典型的な方法が何であるかを知ることに興味があります(私の要件はかなり標準的に見えるので、これらの仮定オプションが存在しない理由Tomcatをプロダクションで使っている人のために...)。

答えて

5

<error-page>は正解ですが、すべてのエラーコードを一般的なメッセージにリダイレクトする必要はありません。どのように各エラーを処理するかについて考える必要があります。あなたがコードの1つを見逃す恐れがある場合は、HttpServletResponse interfaceの定数をチェックしてください。

+0

しかし私はしたいと思うこと - それは自己完結型のWebアプリケーションなので、ユーザーの視点からは、どちらかのものが動作しているか、そうでないものです。実際のレスポンスは実際には一般的です(ログには技術スタッフに実際の問題とHTTPレスポンスコードがそのまま表示されます)。とにかく、Tomcatが送るかもしれない応答コードの列挙に基づいてあなたの答えを受け入れる。 –

+0

デフォルトのTomcatインストールには、デフォルトでインストールされた一連のwebappsがあります。 'manager'、 'host-manager'、 'examples'、 'tomcat'などがあります。これらのWebアプリケーションのそれぞれで、この一連のエラーコードを設定する必要があるようですね。 –

+0

ああ - ちょうどCATALINA_HOME/conf/web.xmlファイルが見つかりました。私はをそこに置いていますが、tomcatが参照されているファイルを見つける方法(または、error.htmlファイルをどこに置くか)を理解することができないので、まだ問題はあります。これは、ハッカーが「/tomcat」対「/foo」のどちらを照会するかによって、ハッカーが異なる結果を見ることを意味します。 –

2

可能なオプションは、あなたが望む正確ページにエラーページをリダイレクトすることができサーブレットフィルタを設定することです...あなただけのコードが一度これをだろう、そしてそれはすべてのエラーコードのために働くだろう。..

+0

興味深いアプローチ...私はそれがデフォルトのエラーページであったかどうかにかかわらず、生の文字から試して解決するためにすべての単一の応答を解析する必要があるので、少し壊れやすいかもしれないと思う。あるいは、問題のページを識別する良い方法がありますか? –

+2

@dtsazzaパフォーマンスに関して、要求の処理全体に関わるダースの数十に示唆されている数十の命令を比較すると、0.1%未満です。 **コードが高レベル**の場合、パフォーマンスへの影響はごくわずかです。 – KLE

3

エラーのいくつかは直接コンテナによって送信され、アプリケーションは対処する機会がありません。たとえば、存在しないリソースが要求されると、404エラーが送信されます。アプリケーションで何かできることができる唯一の方法は、web.xmlに適切な<error-page>という項目を宣言することです。

私はJeremy Steinと<error-page>が正しい答えであることに同意します。結局のところ、エラーコードは無制限ではありません。

また、Spring MVCでエラーを処理する方法については、hereの説明も読んでください。私は、あなた自身のエラーを処理することが最も重要であると信じています(もしそれらが捕まえられなければ500の内部サーバーエラーになるという例外)。

3

私は<エラーページ>しかし、私は2ポイントを追加したいのですが、答えであることを、ジェレミー・スタインに同意:

  1. あなたはCATALINA_HOMEで<エラー・ページ>エントリを置く必要があります/conf/web.xmlファイル、アプリケーションのweb.xmlファイルに加えて、ハッカーが既定でインストールされた 'manager'、 'tomcat'、 'examples'などの他のWebアプリケーションでURLにアクセスしようとする場合に使用します。

  2. サーバーを保護したい場合は、車に乗るほどシンプルではありませんこれらのエラーページのe。 - ちょうどあなたのサーバーのホストセクションに次の行を追加します

https://www.owasp.org/index.php/Securing_tomcat

2

これを行うための最も簡単で包括的な方法ErrorReportValveを使用している:このリンクはあなたがする必要があるもののリストを持っています.xmlファイル(すでにAccessLogValve持っている必要があります:あなたは、スタックトレースも)ので偽オプションshowReport =の(サーバーの情報を隠しており、このように

​​

詳細については、Security How ToおよびError Report Valveのドキュメントを参照してください。

関連する問題