検索
連載

Tomcatで独自のエラーページを使うJavaTips 〜アプリケーションサーバ/コンテナ活用編

Share
Tweet
LINE
Hatena

 Tomcatは、存在しないURLへのリクエストがあったとき、認証に失敗したときやサーブレットにエラーがあったときなど、HTTPのエラー発生時には以下のようなエラーページを表示します。

Tomcatのデフォルトエラーページ
Tomcatのデフォルトエラーページ

 しかし、このエラーページはセキュリティ的に問題となることがあります。使用しているTomcatのバージョンがエラーページのフッタに表示されるからです。エラーページの表示から、脆弱性のあるバージョンを使用していることを知られ、攻撃対象にされてしまう危険があります。もちろん、メンテナンスが万全で、脆弱性が発見されるたびに最新バージョンにアップデートしているシステムなら、バージョンが表示されても問題はありませんが、現実はなかなかそういかないでしょう。

 このような危険を防ぐために、エラーページを自前で用意したものに置き換え、セキュリティの向上を図るべきです。Tomcatでは、Apacheと同様にエラーコードに応じて独自のエラーページを指定することが可能です。また、独自のエラーページを用意しておくことで、エラーページも含めたWebアプリケーション全体の外観を統一できるという利点もあります。

独自のエラーページを指定する方法

 独自のエラーページを使用するには、サーブレットのデプロイメントディスクリプタ(web.xml)の修正が必要です。以下では、「指定したページが見つからない」ことを意味する404エラーコードに対して、Webアプリケーションのルート配下にある「/error/404.html」というページが表示されるようにします。赤字部分が、追加すべき記述です。

デプロイメント・ディスクリプタ(web.xml)

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 デプロイメントディスクリプタの変更には、Tomcat全体の設定ファイル「%CATALINA_HOME%\conf\web.xml」を変更する方法と、それぞれのWebアプリケーション配下にある「WEB-INF\web.xml」を変更する方法の2つがあります。

 セキュリティ上の理由で独自のエラーページを使う場合は、全体の設定ファイルとなる「%CATALINA_HOME%\conf\web.xml」に記述します。各Webアプリケーションのweb.xmlに記述した場合、それ以外のURLのリクエストにはデフォルトのエラーページを表示してしまうからです。逆に、Webアプリケーションの外観の統一が理由なら、各Webアプリケーションのweb.xmlに記述しておくことで、アプリケーションごとの外観に合わせたエラーページを表示させることができます。

最低限用意すべきエラーページ

 HTTPステータスコードでは、 400番台と500番台がエラーコードとして定義されています。エラーコードだけでもかなりの数があるため、それらのすべてについて、独自のページを用意するのは容易ではありません。また、その多くはほとんど目にする機会のないものです。したがって、頻繁に表示される可能性のある、以下のエラーコードだけを用意しておけば実用上は問題ないでしょう。

頻繁に表示される主なエラーコード
コード番号 意味
401 認証に失敗した
403 指定したページへのアクセス権限がない
404 指定したページが見つからない
500 サーブレットやCGIなど、サーバ内部に問題があってページを表示できない

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る