PoEAA ch17 Client Session State
Client Session State
Stores session state on the client.
How It Works
- 大なり小なり使うことになる
- 最小
- セッションIDを保持、セッション情報本体はサーバサイドで持つ
- 最大
- Client Session Stateでセッション情報全持ち、サーバはステートレスにできる
- 最小
- データはDTOにシリアライズして転送する
- HTML Presentationにおいて、データの持ち方は3つ
- URLパラメータ
- 長さ制限あり
- データが少ないとき選択肢となる
- URLが変わるとブックマーク時に問題となる
- 2Cのサイトで使用することへの反対意見
- 長さ制限あり
- hiddenフィールド
- Cookie
When to Use It
- 全セッション情報をClient Session Stateで持てば、Serverをステートレスにできる
- クラスタリング、フェールオーバーとの相性良し
- クライアントが落ちたらセッション情報は失われる
- セッションデータが大量だと問題噴出
- どこにデータ置くの
- 【補】今ではLocalStorage等あるね
- req/resのたびに生じる転送コスト
- どこにデータ置くの
- セキュリティ問題
- Clientにセッションデータを置くということは、次のリスクにさらされるということ
- 見られる
- 改ざんされる
- 暗号化しない限り防げない
- リクエストのたびに暗号化/復号するのはパフォーマンス上の負荷になる
- 暗号化しない場合、送り出したデータが同じまま返ってくるとは思うな
- 再バリデーションしろ
- Clientにセッションデータを置くということは、次のリスクにさらされるということ
- 大なり小なり必ず使う(前述どおり)
- セッションID値のみ持つ程度なら、負荷の問題は生じない
- セキュリティの問題は依然残る
- セッションハイジャック
- わるいユーザは、クライアント側で保持しているセッションIDを書き換えて、他人のセッションに悪さをしようとするかもしれない
- セッションIDは予測困難にせよ
- 乱数
- 乱数でないなら、ハッシュ関数を通す
- セッションハイジャック
英語
- pry
- のぞく、ほじくる