セッションハイジャック対策
いつハイジャックされるのか
MITM攻撃
SSL/TLSの脆弱性
ブラウザの脆弱性
ハイジャックすると出来ること
パスワードが不要な操作は全てできる
パスワードは分からない
ハイジャックされた場合でも安全なサービスを作るには
ハイジャックされたアカウントをログアウトさせる方法を提供する
Googleのアカウントでは、セキュリティーチェックからログインしているデバイスを削除したり、2段階認証を設定することで全てのデバイスからログアウトさせられる。
Djangoの場合、パスワードを変更するとサーバーに保存されているsessionが無効になる(パスワードハッシュを使ってsession tokenにサインしてある)ので、パスワードを変更したブラウザ以外のブラウザでは一旦ログアウトされる。
ログイン状態でも、重要な操作時にはパスワードを要求する
パスワードやメールアドレス変更には、現在のパスワードを入力させる
Amazonは、ログイン中であっても購入時にパスワードを聞かれる
セッションハイジャック対策されていない環境
セッション保存の仕組みを自作している場合
要確認
Pyramid: セッション管理には一般的にBeakerを使う
Signed cookies to prevent session hijacking/spoofing
ハイジャック対策にsigned cookieを使っている
Flask: TBD
Bottle: TBD