12月21日(月)1、2コマ目
今日、やったこと
「安全なWebサイト」構築(入力チェック)
今日のホワイトボード
入力チェック「どこで、どうやる?」
クライアント側とサーバー側の両方で行うこと。
〇クライアント側
HTML5やJavaScriptを使うと結構いろいろできる。
〇サーバー側
java.lang.Stringクラスだけではちょっとめんどくさい。
「Apache Commons Lang」ライブラリのStringUtilsクラスが便利。
ただし、 ライブラリをダウンロード、プロジェクトに追加する必要あり。
|
| 図 入力チェック「どこで、どうやる?」 |
入力チェック「チェックする目的は?」
基本的には入力内容が仕様に合うかどうかをチェックする。
入力チェックをする目的は単に「数値入力用フォームに文字が入力されたか」をチェックするだけではなく、セキュリティ的な問題を発生させない目的もある。
|
| 図 入力チェック「チェックポリシー」 |
入力チェック「入力パターンでチェック」
電話番号やメールアドレス入力用フォームには、入力内容が電話番号やメールアドレスであることをチェックする必要がある。
電話番号やメールアドレスはパターンがありそのパターンは正規表現で表すことができる。
正規表現でアルファベットの小文字は[a-z]で表すことができる。これは文字'a'から'z'をエンコードすると0x61('a')から0x7a('z')と順に並んでいるため、範囲として表現できる。
|
| 図 文字とエンコードされた値の関係 |
|
| 図 正規表現の例 |
|
| 図 パスワード要件は「4文字以上の半角英数字・記号」 |
今日のソースコード
今日作ったコードです。
[例外クラス]AuthenticateExceptionクラス
ユーザー名、パスワードが未登録の場合にスローする検査例外クラス。
[例外クラス]NotFilledExceptionクラス
未入力の項目がある場合にスローする検査例外クラス。
[例外クラス]InvalidPasswordExceptionクラス
入力されたパスワードがパスワード要件を満たしていないときにスローする検査例外クラス。
[ビジネスロジック]Serviceクラス
認証を行うauthenticate()メソッドを作った。
[サーブレット]IndexSrvクラス
入力内容を取得し、認証を行う。
もし検査例外がスローされたら、ログインページにエラーメッセージを表示する。
認証に成功したら2ページ目へ移動。





コメント