アプリケーションサーバ/コンテナ活用編

Tomcatで独自のエラーページを使う

WINGSプロジェクト
佐藤匡剛(MOGRA DESIGN, Ltd.)
2004/7/13

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

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

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

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

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

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

デプロイメント・ディスクリプタ(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
  ...中略...
  <error-page>
    <error-code>404</error-code>
    <location>/error/404.html</location>
  </error-page>

</web-app>

 デプロイメントディスクリプタの変更には、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など、サーバ内部に問題があってページを表示できない

「Java TIPS」

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH