1月13日(木)3、4コマ目
今日、やったこと
- バッファオーバー確認テスト
- 安全なWebアプリ(入力チェック)
今日のホワイトボード
入力チェック「なぜ必要?」
基本的には入力内容が仕様に合うかどうかをチェックする。
入力チェックをする目的は単に「数値入力用フォームに文字が入力されたか」をチェックするだけではなく、セキュリティ的な問題を発生させない目的もある。
| 図 入力チェック「なぜ必要?」 |
入力チェック「どこで、どうやって」
サーバー側、クライアント側の両方で行うことが望ましい。
〇クライアント側
HTML5の<input>タグや<select>タグにはチェック機能がある。
JavaScriptも使える。ライブラリもある。
〇サーバー側
基本的にString型のデータをチェックすることになる。(getParameter()の戻り値はString)
JDKのjava.lang.Stringクラスのメソッドだけではちょっとめんどくさい。
「Apache Commons Lang」ライブラリのStringUtilsクラスが便利。
ただし、ライブラリをプロジェクトに追加する必要あり(WEB-INF/lib以下にjarファイルをコピー)
| 図 入力チェック「どこで、どうやって」 |
入力チェック「パターンマッチング」
電話番号やメールアドレスはパターンマッチングでチェック。
パターンの表現には正規表現を使う。
| 図 正規表現 |
ASCII文字コード表を見ると、数字やアルファベットは連続して割り当てられている。そのため、[a-z]の範囲指定でアルファベット小文字を表現できる。
正規表現を使って文字列のパターンマッチングを行うにはStringクラスのmatches()メソッドを利用する。
パスワード要件チェック
パスワード要件は 4文字以上の英数字、記号 。
正規表現で表すと以下のようになる。
| 図 パスワード要件を正規表現で表す |