登録ユーザー以外でも、ユーザー情報が見れてしまう-「userinfo.php」の修正で解決できます

アクセス解析(logcounterx)のアクセスログレポート (ログカウンタ)を見ていたら、「訪問先」の項目の中に、「/userinfo.php?uid=1」というのがありました。

これはどういうことだろう? と、試しに、http://eye-jp.com/userinfo.php?uid=1 というアドレスを指定したところ、管理者である「eye」のアカウント情報(プロフィール)=ユーザー情報が表示されました。

試しに、末尾の数字を別の数字にしたところ、やはり、その番号のアカウント情報(プロフィール)=ユーザー情報が表示されてしまいました。

これはもしかして、「管理者でログインしているので」全員の情報を見ることができるのかな、と思い、ログアウトして試してみました。

結果は、同じでした。

つまり、ログインの有無にかかわらず、つまり、登録の有無にかかわらず、誰でも登録者のアカウント情報(プロフィール)=ユーザー情報を見ることができてしまうのです。

確かに、登録したユーザー同士でしたら、お互いの情報が見えるのでいいかもしれません。

しかし、誰に対しても(具体的にはゲストさんにですが)登録者の情報が丸見えになってしまうのは、問題だなぁ、と思いました。

そこで、この問題の解決策を探したところ、「XOOPS Cube公式サイト」の中に、「登録ユーザー以外でも、ユーザー情報が見れてしまう」というタイトルで、同様の趣旨の質問をしている方がおりました。

302 Found

そして、これに対しては、常連さんがソースの修正の仕方を回答しておりました。

そこで、早速、私もソースの修正をしようと思ったところ、「うん? どのファイルを修正すればいいのだろう?」と止まってしまいました。

試しに、「include ‘mainfile.php’;」の文字列が含まれているファイルを検索して探したところ、たくさんありすぎました。

「/userinfo.php?uid=1」が問題となっているので、ここは素直に、ダウンロードしておいた「userinfo.php」をエディターで開いたところ、該当個所が28行目以降にありましたので、回答に従って修正(追記)をいたしました。

赤の部分が追記部分となります。
——————————————–
$xoopsOption[‘pagetype’] = ‘user’;
include ‘mainfile.php’;
include_once XOOPS_ROOT_PATH.’/class/module.textsanitizer.php’;

if ( !$xoopsUser ) {
redirect_header(XOOPS_URL.”/”,3,_NOPERM);
exit();
}

include_once XOOPS_ROOT_PATH . ‘/modules/system/constants.php’;
——————————————–
修正後、FTPでサーバーにファイルを上書きして、ログインしないで(ゲストさんとして)、さきほどと同じ http://eye-jp.com/userinfo.php?uid=1 を指定してみました。

そうしたところ、アカウント情報(プロフィール)=ユーザー情報の代わりに、次のようなメッセージに代わりました。
——————————————–
このエリアへのアクセスは許可されていません。
ページが自動的に更新されない場合はここをクリックしてください
——————————————–
数秒して、http://eye-jp.com/ にジャンプしましたので、上記の設定でよかったのですね。

※ 別サイトで上の赤部分をコピー&ペーストしたところ、エラーになってしまいました。エディターでよく確認したところ、2行目の「”/”」の2番目の「”」がペーストすると全角になってしまうことがわかりました。この部分、注意です!

タイトルとURLをコピーしました