Tomcatは、存在しないURLへのリクエストがあったとき、認証に失敗したときやサーブレットにエラーがあったときなど、HTTPのエラー発生時には以下のようなエラーページを表示します。
しかし、このエラーページはセキュリティ的に問題となることがあります。使用しているTomcatのバージョンがエラーページのフッタに表示されるからです。エラーページの表示から、脆弱性のあるバージョンを使用していることを知られ、攻撃対象にされてしまう危険があります。もちろん、メンテナンスが万全で、脆弱性が発見されるたびに最新バージョンにアップデートしているシステムなら、バージョンが表示されても問題はありませんが、現実はなかなかそういかないでしょう。
このような危険を防ぐために、エラーページを自前で用意したものに置き換え、セキュリティの向上を図るべきです。Tomcatでは、Apacheと同様にエラーコードに応じて独自のエラーページを指定することが可能です。また、独自のエラーページを用意しておくことで、エラーページも含めたWebアプリケーション全体の外観を統一できるという利点もあります。
独自のエラーページを指定する方法
独自のエラーページを使用するには、サーブレットのデプロイメントディスクリプタ(web.xml)の修正が必要です。以下では、「指定したページが見つからない」ことを意味する404エラーコードに対して、Webアプリケーションのルート配下にある「/error/404.html」というページが表示されるようにします。赤字部分が、追加すべき記述です。
*** 一部省略されたコンテンツがあります。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.