Re: 会員メニューのセッションに関する指摘について
ちょっと前に筆者が書いた
さくらインターネットの会員メニュー画面のセッション情報はログアウトしても1年たっても消えない件 (2007.4.16)の件については、さくらの中の人が実にわかりやすい説明を自身のブログ上に書いてくださったようです。
会員メニューのセッションに関する指摘について (2007.4.24)そもそもセッション維持(認証状態の維持)の方法それ自体が筆者の想定とは違う、そして、認証状態の継続期間の長短のポリシー的な問題に帰着する、と。
なるほど!かなりわかりやすい解説ありがとうございました。筆者の認識が一部間違っていたようだ。読者を混乱させてしまったばかりでなくさくらの中の人に変な心配をおかけましたことをお詫び申し上げます。
ただ、
指摘されている内容については、実際と異なることも多く、当該ブログの管理者様にはコメントだけお送りしたのですが、特に返事の無いまま、飛び火をして憶測だけが流れ続けていることに少し憂慮しており、ここで解説させて頂くことにしました。たしかに、プロフィールのページに掲載している筆者のアドレス宛に直接メールをいただいた。読んだのは届いた3、4日後だったけど(苦笑)。その内容は この記事とほぼ同じ(さすがに認証状態維持の方式3種類の解説まではなかったが)で、かなりの長文。最後に「このメールを公開してくださってもかまいません」と記されていた。
うーん。 スパムならともかく筆者宛に送られた個人的メールの内容をを第三者が見れる場所(ブログとか)でまるごと公開してしまう趣味は少なくとも筆者には無いし、メールの内容を公開させてくれと筆者から依頼してもなく、もらったメールは公開しますよと前もって宣言してるわけでもないところで、「公開してくださってもかまいません」と判断をゆだねられても正直言って困るし、それって中の人(しかもかなり中枢)が果たすべき説明責任を筆者(のブログ)にゆだねる?ということとも取れなくもないし、それってどうなのよ俺さくらの広報担当じゃないし、、、という趣旨のことを筆者にしてはめずらしく返信メールとして書きだそうかなと思ったところで、待てよ?さくらの中のえらい人らしいし、自分のブログだってあるしその気になればさくら本体のサイトで広報させることもできる人だろうし、ということは少し待てば詳しい説明なり対応なりがどっかでなされるだろうなあ、、、と思い至ったところでかなり夜遅くだったので送信キャンセルボタン押して寝た、というのが筆者から見た経緯である。(ああ、実際そうなったんだからもうこれ以上つっこむこたぁないだろと頭の中でコビトさんがつぶやいている・・・)
建設的な話に戻そう。残る問題は、
Webサイト/Webアプリケーションの認証状態の継続期間はどうあるべきか?
である。
Webサイトの開発は比較と模倣(笑)が基本だ。わかりやすいところでYahooを見てみる。
まずはYahoo(Yahooメールやオークションなど共通)のログイン画面↓
次にさくらインターネットの会員メニューのログイン画面↓
違いはもちろん赤い矢印の部分である。
認証状態を長時間にわたって維持させるかどうかをユーザーが選択できるようになっているのがYahooである。Yahooに限らず他のサイトでも見かけるだろう。
カラクリはこうだ。Yahooのログインで矢印の部分にチェックを入れてログインボタンを押したときにYahooから送信されてくるCookieは有効期限付き。チェックを入れない場合のCookieは有効期限なし=そのCookieの有効期限はブラウザが起動している間のみ。 対して、さくらネットのログイン画面で送信されるCookieは常に有効期限が設定され、ブラウザを閉じたりPCを再起動してもそのCookieは生きてしまう。
かなり長期間の有効期限設定のCookieであっても、サーバー側で発行日時(認証日時)をしかるべく維持/監視していれば認証状態はどうにでもいじれる(っていうか実際そうすべき)が、「そもそも有効期限なしのCookie送っとけばいいじゃんCookieってもともとそういう仕様のものなんだし」という感じで、ブラウザに本来備わる機能を有効活用するように考えられているのがYahoo方式である。
ブラウザを閉じたあとでも認証状態を維持するか否かをユーザーが選択できるようにするとして、 では次に考えなければならないのは「ログイン成功後、どの程度の時間その認証状態を維持するか」である。
下記は、
https://edit.yahoo.co.jp/config/set_profileの画面の下のほうのキャプチャである。

デフォルトが24時間(毎日)であり、かつ最長設定でも24時間である。
さらにクリティカルな情報の画面ではこの設定値にかかわらずいちいち認証画面にリダイレクトされる。たとえば上であげたこの画面とか。
ちなみにさくらインターネットの会員メニュー画面では同種の設定画面は見つからなかった。
まとめ。Webサイト/Webアプリケーションの認証状態の継続期間はどうあるべきか?
- そもそもブラウザを閉じても認証状態を維持するか否か自体をユーザーが選択できるようにしてあるサイトが多い。(有効期限なしCookieの活用)
- 認証状態を維持する利便性とセキュリティ確保の兼ね合いはユーザーの使い方や立場によっても違うので、認証状態を維持する最大時間をユーザー自身が選択できるようにしておけるとなお良い
- いずれにしても認証状態の維持継続時間の最大値は短めに。
- クリティカルな画面では1-3までがどうなってるかにかかわらず頻繁に認証処理を入れる
