Tomcat6からTomcat7へ移行したらJSPでJasperExceptionが多発した


Tomcat6で動いていたシステムをTomcat7に移行する作業を行ったんですけど、JSPの実行エラーが大量発生しました。
Tomcatのバージョンアップなんてチョロじゃろって思ってたんですけどねぇ。

一つ一つは大したことないエラーなんですが、画面数が多かったので試験が大変でした。(もともとオフショアで作成したシステムだったので、作りがあんまり良くないってのもあります)

以下に主なエラーをまとめました。

ちなみに正確なバージョンは以下の通りとなります。

  • 移行前:Tomcat 6.0.29
  • 移行後:Tomcat 7.0.85

JSPの属性と属性の間に半角スペースが無いとJasperException

属性と属性の間に『半角スペース』が入っていない場合、

org.apache.jasper.JasperException
サーブレット jsp のServlet.service() が例外を投げました
という例外が発生します。

例えば以下のJSPのコードでは『maxlength』と『tabindex』の間に半角スペースがありません。
<html:text property="txtlnput1" maxlength="8"tabindex="11" style="ime-mode:disabled">
</html:text>
Tomcat6以前はこれで普通に動くんですね。
こんな感じのエラーが大量発生。動かしてみないと気づきにくいです。

JSPの1つのタグ内に重複する属性指定があるとJasperException

例えば以下のようなコードです。

<html:text property="txtinput2" maxlength="8" maxlength="8" style="ime-mode:disabled">
</html:text>
『maxlength』という属性が重複しているため、実行時に例外発生となります。
Tomcat6ではエラーになりません。

タグ内に不要なダブルクオーテーションがあるとビルドで警告になる

例えば以下のようなコード。

<td class="center"">
ビルド時に警告がわんさか出てました。

Eclipseでコーディングしているとダブルクォーテーションは一回の入力で二つ目が自動入力されちゃったりするんで、それが残っていたんですね。

一つ一つ確認しながら修正していったんですが、修正したところは試験しないわけにはいかないので、不毛な試験パターンが増えてしまいました。

まとめ

Tomcat6はディレクトリトラバーサルの脆弱性があったりするので、バージョンアップ必須です。
※ディレクトリトラバーサル ⇒『/../』などの相対パスの連続使用で、管理者の意図しないところでディレクトリやファイルのリストが取得できてしまう問題

移行の際には上記のようなJSPの例外にお気をつけください。

ご安全に!_(:3 」∠)_

以上


<スポンサーリンク>


0 件のコメント :

コメントを投稿