閲覧権限のないページでも,そのページ名がlistなどで閲覧できる

  • ページ: BugTrack2
  • 投稿者: しましま
  • 優先順位: 重要
  • 状態: 提案
  • カテゴリー: 本体バグ
  • 投稿日: 2006-04-22 (土) 01:39:09
  • バージョン: 1.4.6

メッセージ

listやrecentなどのプラグインで,閲覧権限のないページでも,そのページ名が閲覧できてしまいます.そのため,ページの存在は隠匿できません.

list プラグインは自力で書いてみました.(PHPもPukiWikiの構成も全く分かってないので,自分でもかなり冗長だと思います.もっとまともなコードをお教えください.)

--- list.inc.php.orig	2006-04-20 22:37:45.000000000 +0900
+++ list.inc.php	2006-04-22 01:06:20.000000000 +0900
@@ -21,7 +21,14 @@
{
	global $non_list, $whatsnew;

-	$pages = array_diff(get_existpages(), array($whatsnew));
+	$pages = array();
+    $files = get_existpages();
+	foreach (array_keys($files) as $_file) {
+        $_page = $files[$_file];
+		if ($_page == $whatsnew ||
+            (! check_readable($_page, false, false)) ) continue;
+        $pages[$_file] = $_page;
+	}
	if (! $withfilename)
		$pages = array_diff($pages, preg_grep('/' . $non_list . '/', $pages));
	if (empty($pages)) return '';

しかし,これは list プラグインだけで済む問題ではないと思います.recent や RecentDeleted など関連するプラグインは多数あります.特に,ls2 プラグインと tilte オプションを使うと,セクションタイトルだけですが,閲覧権限のないページも見えてしまいます.

そこで,get_existpages と同様に,readable なページを全て返す関数 get_readablepages が必要ではないでしょうか?この関数があれば,多くの場合,get_exstpages を get_readablepages と置き換えるだけで済むと思います.

また,閲覧権限のないページの名前が見えてもよい場合を考えて,pukiwiki.ini.php に $list_if_readable といったフラグを作り,これが 1 ならリストへの閲覧許可のないページの名前の表示が抑制されるとよいと思います.

関連


コメント

  • ページ名を見せたくないものは $non_list で抑止するという思想だとおもいます。 -- teanan 2006-04-22 (土) 02:24:52
    • そのような書き込みも拝見しました.non_list の大きな問題は,閲覧権限に関わりなく,全ての利用者が一律に制限を受けることです.non_list を閲覧権限の狭いユーザに合わせると,閲覧権限の広いユーザは,一覧で見えないページが多数できてしまいます.
      non_list で行うポリシーなら, non_list も edit_auth_pages のような array にする方法でも,上記の問題は回避できると思います. -- しましま 2006-04-22 (土) 10:22:09
  • うーん、ユーザ管理の部分についてはPukiWikiの苦手とする部分ですね (^^; ソースコード上の話をしますと、もう少しで$non_listの処理部分が一箇所にまとまりますそうです。そのあとなら、このようなハックも書きやすくなると思います。現状の構成だと、かな~り面倒そうです (^^; -- teanan 2006-04-23 (日) 03:00:06
    • 現状でこの点に手を出すのは大変そうですね.このあたりの再編が終わってから対処を考えます.
      どうもありがとうございました. -- しましま 2006-04-23 (日) 11:36:23


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-04-23 (日) 11:37:04
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.295 sec.

OSDN