セッションについて。
データを画面から登録する場合に下図のように
入力画面⇒確認画面⇒結果画面という遷移をします。
●入力画面では”確認ボタン”を押下した際、精査処理が走ります。(半角数字精査とか)
あーんど、入力情報をセッションオブジェクトにつっこみます。
●確認画面ではセッションの情報を表示します。
んで”登録ボタン”を押下でセッションのデータをDBにつっこみます。
●結果画面にはセッションの情報を表示させます。
なぜセッションにつっこむのか?
確認画面で”登録ボタン”を押下した際に、
<input type=”hidden” value=”11111″>のようなhiddenを使用した引継ぎだと、
データを改ざんされる恐れがあります。
(ローカルにHTMLを落としてvalue=”ウゲ”とかにしてURLを直接指定して・・・みたいな)
悪意あるユーザがありえない情報をDBにつっこんだとすると、、障害が起こります。。
金額を登録するところに、”ウゲ”とかDBに登録されて、
請求処理の夜間バッチとか流れたら・・・、怖い怖い。。
さすがにDBのカラムはNUMBER型とかになってるか。。
ま、どっちにしろアベンドしちゃう。
まぁセッションにすりゃ大丈夫でしょ。なんて余裕こいてたら。。
★「11111」と「22222」という2件のデータを画面を使って登録するとします
〓〜〓については、下図を参照してください
1.〓の確認ボタンで、セッションに「11111」をつっこみます。
2.〓の画面にはセッションの「11111」を表示します
3.〓の登録ボタンでセッションの「11111」をDBにつっこみます
4.〓の画面にはセッションの「11111」を表示します。
ここまではなんてことはない。いたってまっとうなシステムです。んで。
5.〓で「22222」を入力して確認ボタン押下でセッションに「22222」をつっこみます
(〓と〓は同じ画面です)
6.〓でセッションから「22222」を取得して表示します。
ここでブラウザの戻るボタンを使って〓まで戻ってしった!!とします
さて、どうなるでしょう。
画面には「11111」が表示されていますが、セッションには「22222」が入ってます。
この状態で〓の”登録ボタン”を押すと、DBにはセッションの「22222」が入ります。
結果画面にはもれなくセッションの「22222」が表示されることになります。
「オイ、わしは画面で「11111」って表示されてるとこで
登録ボタン押したんやでぇ!!DBに「22222」がはいるなんてどないやねん!!!」
なんていう事態が起こってしまったりして・・・・。
ってかさ、んじゃさ、入力画面の”確認ボタン”押下で精査して、hiddenで引継いで、
もう一回確認画面の”登録ボタン”で精査すりゃいいじゃんよ、って。
そうすりゃいくら戻られたって、その画面自体にhiddenでデータ埋め込んであんだから
問題ねぇじゃんよ。
果たして、そんな一見無駄な、しかもロジックが全く一緒なこと2回もするなんて、
システム屋としてどうなんだ?あぁん?みたいな。
今はそんな感じだ。。
コメント