Tomcatで「404 File Not Found」とか「500 Internal Server Error」とかが発生すると、デフォルトではTomcatが自動的にエラーページをブラウザに返します。
今回は、Tomcatが自動的に返すエラーページをカスタマイズして、独自のエラーページを返すようにします。
エラーページをカスタマイズする理由
Tomcatが返す標準のエラーページをユーザーが見ると、次のようなことが起こります。
- 一般的なユーザーは、このページが何のページか理解できない
- 一般的なユーザーは、次に何をすれば良いのかわからない
- 攻撃者が、Tomcat(Java)を使っていることを知ってしまう
- 攻撃者が、Tomcatのバージョンを知ってしまう
- 攻撃者が、どのようなプログラムか、どこでエラーが発生したかスタックトレースでわかってしまう
これらは、ユーザビリティ、セキュリティともに、好ましいものではありません。
よって、エラーページはカスタマイズする必要が出てきます。
エラーページをカスタマイズするには?
Tomcatの設定を変更します。
HTTPエラーステータスコード別に、独自のエラーページを指定することで、エラーステータスに合った独自のエラーページを返すことができるようになります。
web.xmlの設定
1 2 3 4 5 6 7 8 9 10 11 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <error-page> <error-code>404</error-code> <location>/WEB-INF/jsp/http_error_404.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/WEB-INF/jsp/http_error_500.jsp</location> </error-page> </web-app> |
設定の解説
この設定例では、404エラーが発生した場合と500エラーが発生した場合に、独自のエラーページを返します。
web.xmlにて、エラーコードと対になったエラーページを指定します。
設定例の通り、エラーページは、HTML以外にも、JSPを指定することができますので、よりきめ細かなエラーページを作ることもできます。