12月15日(火)2コマ目
今日の予習
アプリケーション構築にあたり、今まで学んできたことをそのまま使うと実は非常にマズいところがあります。なるべくポイントを絞って、簡単なサンプルで、としてきた結果、本来なら知らないとマズいところをスルーしてきました。
ということで、卒業に向けて取りこぼしを一気に回収していきます。
サンプルアプリケーション「ユーザー認証」
ただユーザー認証をするだけです。
[DAO]UserDAOクラス
ユーザーマスタアクセス用クラス。
[Exception]AuthFailureException
認証失敗時にスローする検査例外。
[Exception]InvalidPasswordException
入力されたパスワードがパスワード要件を満たしていないときにスローする検査例外。
[Exception]NotFilledException
未入力の項目がある際にスローされる検査例外。
[Util]PasswordUtilクラス
パスワード、ソルトをハッシュ化するために利用。
階層を横断して利用される。
[BLL]Serviceクラス
機能提供クラス。
[presentaion]IndexSrvクラス
サーブレット。
このアプリケーションのエントリポイント。
[presentation]SecondPageSrvクラス
サーブレット。
2ページ目用のサーブレット。
[presentaion]AuthFilterクラス
サーブレットより前に実行されるフィルタ。
認証済みかチェック。
[presentaion]index.jsp
1ページ目。ユーザー名、パスワードを入力し認証成功から2ページ目へ。
認証失敗ならエラーメッセージ表示
[presentaion]userinfo.jsp
2ページ目。認証に成功した場合、このページで認証済みユーザーの情報が表示される。
[presentaion]error.jsp
エラー発生時に表示される。
web.xmlにてエラー発生時にこのページが表示されるように設定されている。
web.xml
アプリケーションの設定ファイル。
今回はエラーページの設定のみ行っている。
今日、やったこと
認証
今日のホワイトボード
認証について
認証に使える情報は「本人しか持っていないモノ」、「本人しか知らないこと」。
よって、これらの情報が漏洩することは認証システムの崩壊になるため、防がなければならない。
|
| 図 認証に使える情報 |
今まではDBにパスワードを平文のままで格納していたが、もしDB情報が漏洩した場合、非常に危険である。よって、漏洩してもパスワード情報が守られるようにパスワードをハッシュ化して格納するのが一般的。
|
| 図 DBにパスワードを平文で保存してはダメ |
ハッシュ化
|
| 図 ハッシュ化 |
パスワードをハッシュ化する際、より強固なハッシュ値(推測が困難なハッシュ値)にするためにソルトを追加して文字数を増やし、ストレッチングを行う。いずれも総あたり攻撃に対する対応策。
|
| 図 ソルト |




コメント