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にパスワードを平文で保存してはダメ

ハッシュ化

図 ハッシュ化

パスワードをハッシュ化する際、より強固なハッシュ値(推測が困難なハッシュ値)にするためにソルトを追加して文字数を増やし、ストレッチングを行う。いずれも総あたり攻撃に対する対応策。

図 ソルト
パスワードをハッシュ化する際に利用したPasswordUtilクラスを載せときます。




コメント

このブログの人気の投稿

1月6日(水)1コマ目

11月25日(水)1コマ目

10月14日(水)1コマ目