theme by pouretrebelle

ログインするシステムで、「ログインを保持する」機能の安全な作り方 - Yahoo!知恵袋

1.ユーザーにパスワードとかを登録させる。
2.ユーザーはパスワードとかを打ち込んでログインする。
3.パスワードが合ってたら、適当に予測不能な文字列を生成する(この文字列を以下、セッション・キーと呼ぶ)。
4.セッション・キーをDBとかに、ユーザーのIDと関連付けて保存する。
5.4で保存したセッション・キーと同じものをユーザーのクッキーに入れる
6.再訪問時は、ユーザーのクッキーの持つセッション・キーの値と、DBに入ってるセッション・キーが一致したら当該ユーザーと見なす。
7.ログアウト時はDB、クッキーともに破棄する。セッションキーはログインのたびに新しく作り直し。
また、DB側にセッション・キーの寿命を設定しておき、古いセッションキーは無効とする(クッキーの寿命設定だけでは脆弱です)。

これが基本です。
ユーザーに持たせる方を、サーバー側の持つセッションキーから生成される別のデータ(例えばハッシュ値とか)にする事もあるでしょう。ユーザーIDが漏洩 しても問題ないのであれば、ユーザーIDをユーザーの持つセッションキーに含ませておく事でDB側の検索がしやすくなります。
クッキーが盗まれると色々おしまいなのは事実。Amazonなんかは、支払いの時だけは毎回パスワード再確認をする事で、勝手に買い物される事だけは防いでいますね。ほかにもパスワードや個人情報の変更の際には、パスワードの再入力を要求するサイトが多いです。

-  ログインするシステムで、「ログインを保持する」機能の安全な作り方 - Yahoo!知恵袋

Quote posted 7ヶ月前
florean theme by pouretrebelle