generated at
session
Webのやつ

session
sessionは、特定ユーザーの情報を決められた期間だけ保存しておく入れ物
ログインしているあいだ保持されるsessionログインセッションと呼ばれる
ECサイトで、買い物かごの中身を入れておくといった、一時的なデータの保存にも使われる

cookieのsession token
セッションデータの実体へのポインタとして、tokenをcookieに持たせておく
名前は何でも良いけど、Djangoのデフォルトでは sessionid が使われる
漏洩防止のために名前を変更できるけれど、すぐにばれてしまう

セッションデータ
セッションデータの実体をどこに保存するかはサイトによって異なる
ブラウザcookie、サーバーのメモリ、サーバーのファイル、KVSデータベース

cookieにセッションデータを保存
Webサーバー側でセッションデータを保持しなくてもよくてサーバー提供者は楽
データはユーザーに閲覧されてしまう
signed cookieを使っていればユーザーによる改竄は防げる
cookieには最大4kbしかデータを持てない

サーバーにセッションデータを保存
Webサーバーのどこにセッションデータを保存するか決める
Djangoのセッション置き場の設定では、ファイル、データベース、メモリ、キャッシュ、などから選べる。
ファイルに保存した場合、そのサーバー1台の中にファイルとして保存される
複数のWebサーバーを立ち上げた場合、サーバーごとに保存されてしまう
ロードバランサーがどのWebサーバーHTTPリクエストを転送するかによって、sessionが切り替わってしまう

session tokenの複製
ログイン状態のセッションのsession tokenを手に入れられれば、別ブラウザでもログイン状態になれる
ブラウザのデバッガーsession tokenを手に入れて、別ブラウザで設定してみよう
Pythonでもcookieに複製したsession tokenを入れてサーバーアクセスすれば、ログイン状態になれる
#TBD: code例

セキュリティ

タグ