目次
セッション管理
セッションとはWebサイトを訪れたユーザーがWebサイト内で行う一連の行動の流れのことです。
このセッション内におけるユーザーの状態を管理することをセッション管理と呼びます。
解説
セッション管理をECサイトにおけるセッションの例でみていきましょう。
ユーザーがWebサイトを訪れてから、カートに商品を入れ、名前・住所等を入力し、買い物を完了してWebサイトを閉じるまでがセッションとなります。
以下がECサイトにおけるセッションの一連の流れの図です。
ECサイトでは、リクエストしているユーザーが誰なのか、ユーザーは何をカートに入れたのか、金額はいくらになるのかといった情報をサーバー側で管理する必要があります。
しかし、HTTPにはユーザーが上記のような情報を記録する機能を持っていません。
そのため、セッション管理を行うためにWebサーバーはユーザー毎の情報にIDを紐づけます。
このIDをセッションIDと呼びます。
セッションIDはCookieを利用してWebブラウザに保存され、WebサーバーはCookieのIDを見てそのユーザーが誰なのかを判別する仕組みになっています。
リクエストしてきたユーザーのカートの中身を知りたい場合、サーバーが管理している情報の中から、ブラウザから送信されてきたセッションIDと同じIDが付けられている情報を引き出し、その中に格納されているカートの情報を取得します。
このようにCookieとセッションIDを用いるのが、一般的なセッション管理の方法となっています。
以下がセッション管理のイメージ図となっています。
しかし、セッション管理を行う場合、注意が必要になります。
セッションIDを第三者に知られてしまうと、第三者がセッションIDのユーザーになりすましてECサイトで買い物をしてしまう可能性があります。
セッションIDはよく狙われる情報であり、第三者のセッションIDを乗っ取るセッションハイジャックと呼ばれるサイバー攻撃も存在します。
このようなこともあるので、セッションIDの管理は注意する必要があります。
例えば、ランダムなIDを指定してリクエストしたら第三者の情報が見えてしまうといったことが起こらないようにセッションIDには十分な桁数を設定するといった対策が必要です。
RubyのセッションIDでは英数字で32桁のセッションIDを生成しています。
これだけセッションIDが長いとセッションIDを当てることが難しくなります。
また、暗号化、一定期間でセッションIDを切り替えるなどの対応が有効となります。