プロが教える店舗&オフィスのセキュリティ対策術

セッション・クッキーを使用せずに『ブラウザを閉じた瞬間に(強制的に)ログアウトさせる』 方法はありますでしょうか?
現在の処理方法はMySQLでflagを立てて処理
flag = '1' なら ログイン中…
flag = '0' なら ログアウト

処理させたい内容
『ブラウザを』 → 『閉じた』    → 強制ログアウト実行
         → 『開いたまま』 → まだログイン中にさせておく

アドバイスよろしくお願い致します。

A 回答 (3件)

記述されていない部分の仕様に絡んでくるので


なんともいえませんが、

hiddenタグでセッション情報(アクセスID?)を持たせておくことで、
アクセス(リアルタイムに通信)している時だけログイン状態、
それ以外はログアウト状態としてみるのはどうでしょう?

ただそれでは、器用な人だと偽装できたりするので
最終アクセス時刻とアクセスIDの突合チェックなども
導入してセキュリティ面の強化も必要になりそうです。
その際には、アクセスIDもアクセスの都度変わるといった
一見余計な処理も加わってしまうことになります。

ひとまず、そういう考え方もありますよという
逆の見方からのお話でした。
    • good
    • 0
この回答へのお礼

ご指摘のとおりhiddenタグはセキュリティ面が甘くなるので仕様から外しております。

お礼日時:2005/01/29 03:59

JavaScriptを使っていいのであれば、Bodyタグのonunload属性にログアウト用リクエスト送出のロジックを書いておく手もありますが…


JavaScriptがOffにされていると無力ですからあまりオススメできませんね。
ブラウザ側にログアウト処理を強制できたとしても、ブラウザが強制終了されたりネットワークの切断があったりすると意味がなくなってしまいます。
どんな手を使うにしても、一定時間アクセスのない人をログアウトさせる処理を定期的に走らせる必要があります。

この回答への補足

JavaScriptは使用いたしません。ページ間の移動が入ると処理仕切れなくなるからです。
php側のセッション・クッキー処理だと、ページ間移動に対して有効です。が…ここで頭を悩ませているのが時間の処理です。
例>1時間の処理だと
setcookie("login",$in,time()+1*60*60);

ご指摘のあるように
>どんな手を使うにしても、一定時間アクセスのない人をログアウトさせる処理を定期的に走らせる必要があります。
ここでいう "一定時間" = (極端に)1秒にさせたとします。
1秒 = すぐにログアウト
・セキュリティ面は向上するが、使い勝手が悪くなる
>定期的に走らせる
には、どういった処理が有効なんでしょうか?
補足よろしくお願い致します。

補足日時:2005/01/29 04:02
    • good
    • 0

ブラウザをユーザが閉じるという行為をサーバ側では


知るすべが無いので難しいと思います。

この回答への補足

では、教えてgooはどう処理しているのでしょうか?
URLを見る限りではphpで処理しているように見えるのですが…。

補足日時:2005/01/29 03:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!