セッションの復元機能
この機能は、バージョン0.9.10とそれ以降で利用可能です。
セッションデータには、セッション乗っ取りなどの危険性を緩和するために有効期限が設けられており、最後のアクセスから、その期限が経過しているセッションデータは破棄され、それまでのCookieやアクセス履歴、表示設定などは全て消滅してしまいます。特に、端末ID(製造番号とかサブスクライバIDとかシリアル番号とか)を送信しない端末では、比較的セッション乗っ取りなどの危険性が高いため、有効期限を極力短く設定する必要があり、また、IDの送信機能はあれど、その都度、送信の要求と確認が必要なNTTドコモのiモード端末では、ページを遷移するたびにIDを要求すると利用者の利便性を著しく損ねるため、これは通常は行われず、そのため原則は、IDを送信しない端末と同じ扱いになっています。また、それ以外の端末でも、セッション乗っ取りなどの危険性が皆無ではないので、あまり長い有効期限を設けるわけにもいきません。
そのため、例えば、認証が必要なサイトを頻繁に利用する向きは、毎回ユーザ名とパスワードを入力し直したりする必要があり、スクリプトの管理者だろうが、作者だろうが、これを逃れることはできませんでした。おかげさまで、ウェブメールにログインして、長文の超大作を入力し終えて、いざ送信しようと思ったら期限切れでログアウトになってて、せっかく入力した内容は消え失せ、「おれ、作者なのに…orz」ということがあったりするわけです(実話)。
てなことで、管理者特権を設けよう(笑)という主旨で用意されたのがこの機能です。
管理者があらかじめ登録してある端末IDと暗証番号による認証を経ると、セッションデータは都度バックアップ保存され、有効期限が切れた後も、最後に保存された時点のものに復元できるというものです。まあ、要するにログイン機能なわけですが、誰でも利用できるわけではなく、管理者が手動で登録する必要があるので、管理者特権。
なお、認証には端末IDを利用しますので、IDの送信機能がない端末では、残念ながら利用できません。悪しからず。
認証に用いる端末IDと暗証番号は、あらかじめAuth.inc.phpに、以下のように登録しておきます。
$_auth_db = array( '端末IDのMD5ハッシュ値' => '暗証番号のMD5ハッシュ値', );
MD5ハッシュ値とは、元の文字列を非可逆変換した32ビットの16進数ですが、_check_auth.phpは、この「端末IDのMD5ハッシュ値」と「暗証番号のMD5ハッシュ値」を簡単に知るためのスクリプトです。携帯端末でこのスクリプトにアクセスして、暗証番号を送信すると、TEXTAREAにそれぞれの値が表示されるので、(それをコピーしてPCにメール送信するとかなんとかして)Auth.inc.phpに登録してください。
で、「pc2m.php?_ucb_a=l」のように、スクリプトの「a」パラメータの値を「l」(LOGINのエルね)にしてアクセスすると、保存と復元の操作画面が表示されます。お試しあれ。
注意
- 復元の時点で、全てのベーシック認証のユーザ名とパスワードは破棄されます。復元処理は、ブラウザをいったん終了してあらためて起動し直した状態と同じとみなして、こういう仕様にしてます(ブラウザなら、「保存」していれば、あらかじめ入力された状態で表示はされるけど)。
- 復元の時点で、expires値が期限切れか空のCookieは破棄されます。expires値が空のCookieとは、有効期限が「ブラウザを終了するまで」というやつで、一般的にセッション認証では、「次回から入力を省略」とか「次回から自動的にログイン」にチェックしていないと、こういうCookieが吐かれる筈。これも、ベーシック認証の場合と同様に、復元処理は、ブラウザをいったん終了してあらためて起動し直した状態と同じとみなしているわけです。
- アクセス履歴は、最新のものから、設定ファイル(Config.inc.php)で定義する定数MAX_HISTORY_KEEPの数までのものが復元され、それ以前の履歴は破棄されます。
- 通常、バックアップは徐々に肥大化していく筈で、ディスク容量を圧迫したり、処理速度に影響したりするかもしれませんので、バックアップは定期的に消去するようにしてください。
- バックアップの消去を行うと、その時点のセッションデータも破棄されます。
- ドコモ以外の端末では、この機能を利用する場合は、認証時に限らず常に端末IDを送信する設定にしておいてください。これはこのスクリプトが、同一セッションの最中にIDの送信/非送信が切り替わると、別の端末と認識し、それまでのセッションデータを破棄してしまうからです。
- 認証データをわざわざ連想配列にしてることからも知れる通り、複数の端末(複数の利用者)を登録することができます。ただし、複数の端末で同じセッションデータを共用できるわけではありません。
2005/08/10
トラックバック
このエントリーのトラックバックURL:
http://www.rcdtokyo.com/mt/mt-rcdtokyo5428-tb.cgi/740