Javaアプリの異常を招く“不適切な入力値”とは? 対策は:Javaのよくあるランタイムエラーの5大原因【第1回】
起こりがちなJavaの「ランタイムエラー」とその回避方法を把握しておくことは重要だ。特に頻出する、入力値に基づくランタイムエラーとその解決策を紹介する。
その名が示す通り「ランタイムエラー」(実行時エラー)は、アプリケーション実行中に発生するエラーだ。アプリケーションが所定の要件から逸脱した不適切な動作をするときは、ランタイムエラーが発生している可能性がある。
プログラミング言語および実行・開発環境「Java」のランタイムエラーでアプリケーションが急停止した場合、Javaエンジニアは何をすればよいのか。本連載は、Javaエンジニアが遭遇しやすいランタイムエラーの5つの原因と、それに対処する手順や戦略を解説する。
1.“不適切”な入力値
併せて読みたいお薦め記事
エラーへの対処法
- 脆弱性「Log4Shell」にこれで対処 攻撃を防ぐために知っておきたい措置
- 重大なバグの発生時、IT部門が腕前を発揮するためのノウハウとは?
- 「ポートは使用中です」「ポートは既に開かれています」のエラーが出る原因は?
エンドユーザーの入力がアプリケーションの不適切な動作を招く例は、数え切れないほど存在する。Web掲示板が、エンドユーザーの入力した不等号(「<」「>」)などの特殊文字をそのまま受け取った際、意図しない内容を表示してしまうのが典型的な例だ。標準的な文字コード「ASCII」準拠の入力しか受け取らないことを想定したテキスト処理アプリケーションが、絵文字や規格外の文字列を受け取った場合、停止してしまう例もある。
アプリケーションの入力欄に実行可能なデータベース操作クエリを入力する「SQLインジェクション」も主な例だ。SQLインジェクションはアプリケーションの停止だけでなく、アプリケーションのデータ制御を攻撃者に明け渡す危険性もある。
こうした事態を避けるには、入力される可能性がある全種類のデータを、アプリケーションが解釈できる安全な値に変換する「サニタイズ」が欠かせない。Javaによるアプリケーション開発では、開発者は「Apache BVal」「Hibernate Validator」などのライブラリ(プログラム部品群)を用いることでサニタイズを実装可能だ。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.