2004年01月16日

セッションについて。
データを画面から登録する場合に下図のように
入力画面⇒確認画面⇒結果画面という遷移をします。

●入力画面では”確認ボタン”を押下した際、精査処理が走ります。(半角数字精査とか)
あーんど、入力情報をセッションオブジェクトにつっこみます。
●確認画面ではセッションの情報を表示します。
んで”登録ボタン”を押下でセッションのデータを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回もするなんて、
システム屋としてどうなんだ?あぁん?みたいな。

今はそんな感じだ。。

コメント

タイトルとURLをコピーしました