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


メッセージ

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 ならリストへの閲覧許可のないページの名前の表示が抑制されるとよいと思います.

関連


コメント



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

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.334 sec.

SourceForge