セッション
2022-04-13 (水) 14:57:07
セッション とは †
- セッショントークン
- セッションレプリケーション
- スティッキーセッション方式
セッション管理の種類 †
- セッションID(SessionID)
- パーミッシブなセッション管理
※端末IDに対してsidを紐づける
セッションID †
- セッションIDの要件
- 第三者による推測が困難な値であること
- 第三者により強制されないこと
- 第三者に漏洩しないこと
- 対応・対策
Cookie †
- セッションIDのみをCookieに保存する。
- セッションID以外の値は、サーバ側に保存し管理する。
- Cookieの有効期限をできるだけ短くする。
- Cookieの有効範囲を最小限にする。
- Cookieではセッションフィクセーション攻撃を防ぐことができない。
- Cookieに保存する値を予測、盗聴等により盗難された場合は、悪意のあるユーザが盗用することができてしまう。
- IDやトークンを予測困難な値にする、ネットワークをSSLで暗号化する等で予防はできる。
- 端末側が使えない場合がある。
- ネットワークのデータ量が増える。
URL †
- セキュリティ上の注意が必要。HTTPS通信を使う。ログの管理など。
- 第三者にURLを参照されることにより、セッションIDが漏洩する。
- サーバのログにセッションIDが保存される。
端末ID †
- HTTPリクエストに含まれる端末IDを使う。IDとパスワードを入力せずに認証が可能。
セッション管理の脅威と脆弱性 †
セッション管理情報の漏洩 †
- 盗聴による漏洩
- GETメソッドが使われることでリファラのログにクエリストリングが保存されて漏洩する
- セッションIDの推測が容易
セッションの無効化 †
ログアウト機能 †
- ユーザの操作によりログアウトしてセッションを無効化することができる機能
セッションタイムアウト †
- Webアプリのセッションタイムアウト機能。
- ユーザがログアウトの操作をしなかった場合に自動的にセッションを無効化するための機能。
ステートフル/ステートレス †
ステートレス †
ステートフル †
スケールアウトするシステムでの考慮点 †
- データストレージにKVSを使う
- セッションIDではなく、セッションの値をCookieに保存する
- 次のリクエストに引き継ぐ情報をフォームに非表示で埋め込む