#3061 closed enhancement (fixed)
ログイン成功時に、そのメンバーの既存のセッションをすべて無効化できるようにする
Reported by: | ebihara | Owned by: | shingo |
---|---|---|---|
Priority: | major | Milestone: | OpenPNE2.13.4 |
Component: | 指定しない | Version: | |
Keywords: | Cc: |
Description (last modified by )
■概要
認証機能におけるセキュリティ強化の為、ログイン時に発行するセッションIDはユーザに対し1つに制限する。
■仕様
- 携帯版・PC版を問わず、ログイン中に他の端末・ブラウザからログインした場合(新規にログインIDが発行される場合)、それまでのセッションは破棄される。(管理画面を含む)
- ログイン時に発行されるセッションIDをDBに保存し、認証を必要とするアクション実行時は常にログイン時のセッションIDと現在のセッションIDの一致を確認し、もし一致しなければログインページへリダイレクトさせる。
- config.phpで機能の使用を選択でき、切り替えてもログイン状態は保持される
■関連情報
Change History (20)
comment:1 Changed 11 years ago by
Owner: | changed from nobody to masabon |
---|---|
Status: | new → assigned |
comment:2 Changed 11 years ago by
Owner: | changed from masabon to shingo |
---|---|
Status: | assigned → new |
comment:3 Changed 11 years ago by
Status: | new → assigned |
---|
comment:4 Changed 11 years ago by
Description: | modified (diff) |
---|---|
Keywords: | 確認中 added |
以下のリビジョンで修正しました。ご確認ください。
- trunk - r8712
comment:5 Changed 11 years ago by
Description: | modified (diff) |
---|
comment:6 Changed 11 years ago by
Keywords: | 確認中 removed |
---|
comment:8 Changed 11 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
- ktai_do_o_easy_login も修正の必要があるのではないでしょうか
- (single|a|one) session per user という表記がそこそこ使われているようなので、定数名もそれに従った表記にしてみてはどうでしょう?
- 役割からいって、c_member よりも c_member_secure へのカラム追加が適切かなと思いますがどうでしょうか?
- 変更が分散してしまうのではっきりとは言いにくいですが、 controller.php よりは各モジュールの auth.inc に記述したほうがわかりやすいかなと思います
- セッションが無効である場合は、 OpenPNE_Auth::logout() によってログアウトさせてください
- webapp/lib/controller.php 内で対象とするモジュールを pc, ktai のみにしているようですが、本当にそれで問題がないのでしょうか?
- db_member_is_one_user_one_session() 内で db_member_update_c_member_sess_id() をコールしているなど、わかりにくい記述が散見されます。「ログイン時にセッションID情報を更新」→「auth.inc でセッションIDをチェック」→「ログアウト時(またはセッションが無効と見なされた場合)にセッションID情報を破棄」というシンプルな流れにできないでしょうか?
comment:9 Changed 11 years ago by
Description: | modified (diff) |
---|---|
Keywords: | 確認中 added; 差し戻し removed |
以下のリビジョンで comment:10 にあげられた事項について修正しました。
ご確認ください。
【trunkの修正】
comment:10 Changed 11 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
- 定数名には「OPENPNE_」というプレフィックスを付けてください
- ファイル名の変更には svn move コマンドを使ってください
- db_member_update_c_member_secure_insert_sess_id() は、少なくとも db_member_do_access() の以前に実行するべきです
- db_etc_is_check_session_per_user() という関数名で、 is_check が不自然です
- db_etc_is_check_session_per_user() の第二引数 $is_auth は bool 値を期待しているはずですが、実際には OpenPNE_Auth のインスタンスが渡されてしまいます
- db_etc_is_check_session_per_user() の第二引数 $is_auth は不要ではないでしょうか
- OpenPNE_Auth::$is_admin オプションは、インスタンス作成時に設定するようにするべきです
comment:11 Changed 11 years ago by
- db_etc_is_check_session_per_user() の Docblock 形式コメントが正しくありません
ログイン時のセッションIDと現在のセッションIDが一致していないことを確認する
comment:15 Changed 11 years ago by
Keywords: | 差し戻し added; 確認中 removed |
---|
- OpenPNE_Auth のコンストラクタに対して付けられている Docblock 形式のコメントの内容が古いです
- webapp/modules/portal/auth.inc に対しても修正の必要があるのではないでしょうか
comment:17 Changed 11 years ago by
Keywords: | 確認中 added; 差し戻し removed |
---|
以下のリビジョンで comment:15 にあげられた事項について修正しました。 ご確認ください。
- trunk - r8944
comment:18 Changed 11 years ago by
Keywords: | テスト待ち added; 確認中 removed |
---|
comment:19 Changed 11 years ago by
Keywords: | テスト待ち removed |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
確認しました。問題ありません。
Note: See
TracTickets for help on using
tickets.
引き継ぎます。