[PHP-users 17522]Re: Sessionをつかったログイン情報の保存

Y.Watanabe yuw @ msj.biglobe.ne.jp
2003年 8月 26日 (火) 23:57:06 JST


渡辺です。
考え方はいろいろだとは思いますが、
> 1.ログイン成功後、IDとパスワードを
>  セッションに保管させる。
>  他のページに移るたびに、そのIDとパスワードが
>  正しいかどうかDBに問い合わせ、検証する。
>> 2.ログイン成功後、IDのみを
>  セッションに保管させる。
>  セッションに保管されたIDは正しいので、
>  ページの移動時にはパスワードの検証は無しで、
>  保管されたIDのみでユーザーを認知する。
> (注記)この場合、ユーザーがクッキーをいじって
> 他のユーザーになりすますことが可能なら危険ですが、
> そんなことできるのでしょうか?
>> 3.ログイン成功後、IDをセッションに保管させる。
>  その際に、一時的なパスワードを発生させ、
>  DBに登録する。
>  その一時的なパスワードもセッションに保管する。
>  他のページに移るたびに、そのIDと
>  一時的なパスワードが正しいかどうかを
>  DBに問い合わせ、検証する。

1の方法をとるのがベストじゃないでしょうか。
(このへん、他のかたのご意見も求むです)
2の方法はDBへの負担が減るという意味で良いでしょう。がしかし、
> (注記)この場合、ユーザーがクッキーをいじって
> 他のユーザーになりすますことが可能なら危険ですが、
> そんなことできるのでしょうか?

というキケンが残る・・・
・・・・・
・・・ような気がするだけで、
実はセッションIDを盗聴された場合のことを考えると
1、2,3のどの方法をとってもセッションハイジャックの危険性は
同じなような気がします(w
セッション管理の安全性を高める話は
[PHP-users 17252]セッションハイジャック対策
http://ns1.php.gr.jp/pipermail/php-users/2003-August/017782.html
のあたりを見てみてください。
あと、セッションの有効期限も気にしたほうがよいでしょう。
よくある手段としては、session.cookie_lifetimeの値を調整するとか。
ただ、セッションIDを保持させるクッキーの有効期限を使って
セッション自体の有効期限を制御するのって、案外脆弱なような
気がします。クッキーの有効期限ってブラウザ側で細工してしまえそうな
気がするから・・・。
だとすると、
ユーザーIDやパスワードのほかに、
「ユーザー認証がOKとなってそのセッションが発行された日時」も
セッション情報としてサーバー側に保持しておき、
アクセスがあるたびに、
 if (現在日時 >= セッション発行日時+有効期間 ) { 
 $_SESSION=array();
 session_destroy(); 
 echo "あなたはだいぶまえにログインしたようですので";
 echo "念のためもいっかいログインしなおしてください";
 }
みたいなチェックを入れるほうが確実でしょう。


PHP-users メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /