ユーザ情報の管理
XOOPSのユーザ情報は
http://www.xxx.com/userinfo.php?uid=1
などといった形式のアドレスで表示されるため、ゲストには非表示設定にしていても、アドレスを直接たたけば見れてしまう可能性もあるし、そもそも他人のユーザ情報まで見れるということになる。
それは非常にまずい。
と、いうことで。
解凍したときにできるフォルダのうち、htmlが通常アップするフォルダになるわけですが、
/extras/extra_preload/UserInfoProtector.class.phpを/preload/にアップすればそれらは防げます。
細かい動作周りはこのファイルに手を加えることでできるかもしれません。
とりあえず簡単セキュリティに。
追記1:
自分のプロフィールまで見れなくなりました。
プロフィールの編集はできる模様。
追記2:
こちら(XOOPS Cube フォーラム)を参考に、userinfo.phpの先頭付近に
include 'mainfile.php'; include_once XOOPS_ROOT_PATH.'/class/module.textsanitizer.php'; if ( !$xoopsUser ) { redirect_header(XOOPS_URL."/",3,_NOPERM); exit(); }
を追記することで、未登録ユーザからの閲覧は防げる。
が、登録ユーザ同士はプロフィールを見られるので、そのあたり微妙。
追記3:
こちら(XOOPS Cube フォーラム)を参考に、Userinfo.Guard.class.phpを作成、/preload/に放り込んでみる。
mDelegateManager->add('Legacypage.Userinfo.Access', 'UserinfoGuard::myfunc', XCUBE_DELEGATE_PRIORITY_FIRST + 10); } function myfunc() { $root =& XCube_Root::getSingleton(); $user =& $root->mContext->mUser; if ($user->isInRole('Site.GuestUser')) { $root->mController->executeRedirect(XOOPS_URL, 1, "Access Denided!"); } // // Delegate of XCube calls all of added functions. // Therefore, after this function, the regular function will be called. // } } ?>
が、ユーザIDではなく管理権限(isInRoleが相当するのでは?)によって判断しているため、役に立つかは微妙。