2014年6月11日水曜日

ログイン状態を保持するときの問題点

もうWebのシステムもログインしっぱなしでいいんじゃない?ってシーンは多いよね。





●端末側のセキュリティの問題
PCだといろんな人が使うかも知れないってことで、ログインしっぱなしってのがダメってのが多かった。でも物理的にPC触られているんだから今さらって感じするよね。さらにスマホなんて、アプリがずっとログインしっぱなし。ブラウザがログインしっぱなしでもそろそろいいんじゃなかろうか。

●技術的な問題:クッキー
クッキーには寿命ってのがある。クッキーを書き換えない限り、寿命も書き換わらない。ログイン状態を1ヶ月維持ってのは、毎日ログインしていても、1か月後にはログアウトしちゃうことなのか、それとも

●技術的な問題:セッションファイル
クッキーの寿命が長くても、サーバサイドのセッションファイルもまた寿命がある。定期的にクリーニングされないともんすごい量のセッションファイルができる。標準ではファイルに作られることが多いが、DBにもったりmemcacheにもったりいろいろ方法がある。いずれにしてもクリーニングされることが前提になってるので、クリーニングさせないということを考えないといけない。

●技術的な問題:会員/非会員
ログイン状態を保持したいのは、実は会員だけだったりするよね。だからセッションファイルの破棄は、非会員だけにしたいよね。そういう話。もしくは非会員はセッションファイル作らないということするのかな。それはそれで綺麗な作りだけど、ちょっと目はなすとスグにセッション開始しちゃうWebアプリは多いから非会員向けにセッション作らないってのは結構難しい。やっぱりセッションファイルのうち会員だけ維持するとかって実装が出来ると無難。

●技術的な問題:多重ログイン
本当は別のデバイスでログインしたらもう一つのデバイスはログアウトさせたいよね。いやでもそうなのか?PCとモバイルくらいは多重ログインしたほうがいいのか?なんて話。具体的な実装は、ユーザマスタに、その人のセッションIDを記録しておいて、ログインチェックの際には、セッション上はログイン済みでも、DB上は別のセッションIDがあるとログオフさせちゃう。本当はこれ標準の実装でもいいくらいだと思う。

ちなみに多重ログインの防止に一番お手軽なのは、ログインの際にユーザレコードの「今のセションID」を上書きするという方法。ID/PASSの使い回しをやんわり防ぐことができる。


0 件のコメント:

コメントを投稿