[PHP-users 14318] Re: セッションと戻るボタンとセキュリティと

php-users @ php.gr.jp php-users@php.gr.jp
2003年 3月 26日 (水) 02:04:54 JST


SUMiです。

# 皆様、お久しぶりです。

> みなさんいつもお世話になります。MTです。
> 
> 今回は「セッションと戻るボタンとセキュリティと」ということで、
> セキュアかつ、ユーザーに使い易い会員登録システムの構築について
> みなさんのスタイルをお伺いしたいのですが。
> 一通り過去ログには目を通しましたが、改めて。
(snip)
> ◇メールアドレスのみ送信 → 確認メール受信 → メール記載のURLにアクセス → 記入 →DBに登録
> 
> としておりました。メール記載のURLにはセッションIDがくっついています。
> とりあえずOKかなと思い動かしてみましたが、お察しの通り、セッションIDがくっついた
> URLは誰がクリックしても認証OK状態でした。

セッションIDですが、デフォルトでは一定時間が経過すると使用されていないセッ
ション情報は破棄(ガベージコレクト)されます。
よって、上記の方法ではメールを送信した後、ユーザーが記載されたURLへアク
セスするまでに時間がかかった場合、既にセッション情報は破棄され認証に失敗
する可能性があります。

以下、PHPとはあまり関係の無い、ただの手法の話ですが、

> ◇整理しますが、
> メールアドレスの存在確認があらかじめ行え、個人(端末)認証が行えるテクをご教授ください。
> 
> 自分なりの解決法としては、基本的に上記フローで、メール送信時に受付番号を発行し、DBに
> メールアドレスで仮登録して、セッションつけないURLにアクセスしてもらって、受付番号で
> DBからデータ引っ張ってきて、登録完了。

この方法ではセッション情報が破棄されることは無いので永続性がありますが、
上のセッションIDをつけたときと同様に
> セッションIDがくっついた
> URLは誰がクリックしても認証OK状態でした。
こういうことが起きてしまいます。

もう一工夫して
  → メールアドレスとユーザーの任意のパスフレーズを入力
                ← 確認メール受信(受付番号のみが発行される)
  → メール記載のURLにアクセス
  → パスフレーズを入力
                ← 受付番号とパスフレーズの一致を確認。認証OK。
  → ユーザー情報を入力
                ← DBに登録
                ← 登録完了
これでいかがでしょう。




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