#author("2019-03-24T12:51:37+09:00","","") * PKWK_READONLY: Read-Only 構成を容易に [#vc415114] -ページ: BugTrack -投稿者: [[henoheno]] -優先順位: 重要 -状態: 完了 -カテゴリー: 本体新機能 -投稿日: 2004-11-07 (日) 10:58:52 -バージョン: ** 修正 [#x3861b9b] - 下記に時間順・リリース順に一覧 #contents ** 関連 [#i242ddb3] - [[BugTrack/787]]: PKWK_SAFE_MODE (セーフモード) - 発端 -- [[official:続・質問箱/16]] 外部からのcmdやpluginを禁止したい -- [[official:続・質問箱/339]] cmd=editなどを拒否できるトリック **メッセージ [#nc6032fe] 簡単に READ ONLY な PukiWiki が用意できるオプションを用意します。 想定されるニーズ: - (1) オンラインドキュメンテーション用のツールとしてPukiWikiを用いる - (2) 個人あるいは特定のグループにしか編集を許さないが、それ以外にに対してもRead-only公開を行うWikiを用意する - (3) PukiWikiのミラーサイトを用意する - (4) 運営を停止したPukiWikiを保存する ** 機能概要 [#ucb49082] 定数 PKWK_READONLY を 1 に設定することにより、以下の効果が''全て''有効になります。 + スキンに「編集」「凍結」「添付」「新規」「copy」「rename」といった、編集/管理用のリンクが表示されなくなります。 -- (デフォルトのスキン、keitaiスキン(1.4.5_1より)、tDiaryスキン) + Dangling link (未決定のリンク:「?」マークのことです) が表示されなくなります。これは新しくページを作成することを促すための機能ですから、read only構成には不要です。「ハイパーリンクにならない」ことが、「そのページが無い」という事を意味します。 + 編集・挿入系のフォームを表示するプラグインについて、編集用のボタンが表示されなくなります。必要がなければ入力欄も表示されなくなります。(例えば、memoプラグインはtextareaだけが表示されます。pcommentプラグインはコメント欄が表示されなくなります。comment, bugtrack, trackerプラグインは何も表示されなくなります) + calendar_viewer, caleanda2, topicpath, yetlist などのプラグインは編集に関するリンクを出力しなくなります + 内部的にいくつかのロジックが無効になります。 -- 編集・挿入系のプラグインに対するアクセスがブロックされます。本来あるはずの編集フォームを偽造したところで無意味です。 -- ページを書き換えるための代表的な内部関数が無効にになります。これはサードパーティ製プラグインやカスタマイズによる書き換え行為を妨害します。 -- 管理者パスワードを入力する試みは全て(Basic認証も含め)、必ず失敗する様になります。このPukiWikiをパスワードクラックの対象にするのは無意味です。 -- いくつかの管理系プラグインの起動が明確に禁止されます (※禁止しなかったとしても、パスワード入力が失敗するため動作しません) + (パスワードの判定が無効になるため)凍結、凍結の解除のような操作や、バックアップの削除、diffの削除などの管理行為は行えません。(※以下に挙げている、他の手段を使って下さい) このPukiWikiを変更するためには、他の手段を使って下さい。 + PKWK_READONLY を 0 にセットした別の index.php からアクセスして普段通りに編集・管理する + 他のPukiWikiでデータを編集・管理し、そのデータをミラーする + 他のシステムと組み合わせて、直接ファイルを修正する Read only構成にする時は、一緒に PKWK_SAFE_MODE も有効にすることを検討して下さい。 ---- 関連する質問: - [[official:続・質問箱/604]]: 管理グループのみで編集するためのページの作り方について - [[official:質問箱3/53]]: 編集用の入り口を防御する方法について ---- ** 修正 [#w37ff669] ***1.4.5 リリースまでの修正とそれに関するコメント [#t7d999b4] - [[cvs:pukiwiki.ini.php]] (1.107) - [[cvs:lib/make_link.php]] (1.13) -- define PKWK_READONLY を追加。機能制限はこれから。 - [[cvs:plugin/add.inc.php]] (1.6) - [[cvs:plugin/article.inc.php]] (1.22) - [[cvs:plugin/attach.inc.php]] (1.70) - [[cvs:plugin/bugtrack.inc.php]] (1.21) - [[cvs:plugin/comment.inc.php]] (1.26) - [[cvs:plugin/dump.inc.php]] (1.34) - [[cvs:plugin/edit.inc.php]] (1.30) - [[cvs:plugin/insert.inc.php]] (1.13) - [[cvs:plugin/links.inc.php]] (1.22) - [[cvs:plugin/md5.inc.php]] (1.7) - [[cvs:plugin/memo.inc.php]] (1.14) - [[cvs:plugin/newpage.inc.php]] (1.14) - [[cvs:plugin/pcomment.inc.php]] (1.13) - [[cvs:plugin/rename.inc.php]] (1.23) - [[cvs:plugin/template.inc.php]] (1.20) - [[cvs:tracker.inc.php]] (1.28) - [[cvs:plugin/update_entities.inc.php]] (1.7) - [[cvs:plugin/vote.inc.php]] (1.22) -- 1) 編集関係の action プラグインを無効に -- 2) 編集関係の convert プラグインを無効に・制限つきに(submitボタンの消去等) -- 3) 管理用のツールを無効に - [[cvs:lib/make_link.php]] (1.14) -- dangling link を出力しない - [[cvs:lib/func.php]] (1.29) -- 管理パスワードの判定を無効に (※永遠に失敗する) - [[cvs:skin/pukiwiki.skin.php]] (1.39) - [[cvs:tdiary.skin.php]] (1.16) -- 編集関係のUIを出力しない -とり急ぎこんなところでしょうか :) -- [[henoheno]] &new{2005-01-23 (日) 21:08:46}; -データ破壊さえブロックできれば後はどうにでもなるので、カウンター関係は今回見逃しています。 -- [[henoheno]] &new{2005-01-23 (日) 21:11:08}; -そうそう、read-only で運用される方は、「これはRead Onlyなんですよ」ということが他の人にわかる様にした方がいいと思います。それらしいデザインにしたり、説明を加えたり :) -- [[henoheno]] &new{2005-01-23 (日) 21:15:02}; -簡単な使い方: index.php の中で PKWK_READONLY を define して下さい。編集用に別途 index.php をコピーしたものを用意して、そちらは PKWK_READONLY を別の値にして下さい。 -- [[henoheno]] &new{2005-01-23 (日) 21:16:49}; -お疲れ様です :) 一応マニュアルに「注意! PKWK_READONLYを有効にすると、commentプラグイン等による書き込みも制限されます。」のような説明が必要かもと思ったり。 -- [[でぃあばぁ]] &new{2005-01-23 (日) 21:33:04}; -- 大丈夫です。それと同時にcommentプラグインのコメント領域が表示されなくなりますから、彼らにcommentプラグインの存在を気付かれることはありません。(などと言ってみる) -- [[henoheno]] &new{2005-01-23 (日) 23:45:27}; -- pcomment とか vote とか memo とか article などもそれなりに編集画面やボタンが表示されなくなりますよ。 -- [[henoheno]] &new{2005-01-23 (日) 23:48:16}; -- もちろんform画面を別途偽造してアクセスしたところで、actionプラグインは全てをブロックします。 -- [[henoheno]] &new{2005-01-23 (日) 23:51:30}; -- しかもスキンのUIまで変化しますので、どこかで触れたほうが良いのはもちろんですが、数ある設定の中では管理者の方に因果関係が伝わりやすいものになっていると思います。 -- [[henoheno]] &new{2005-01-23 (日) 23:54:08}; --了解です。謎は全て解けた! :) -- [[でぃあばぁ]] &new{2005-01-24 (月) 00:08:33}; -本日0時過ぎにCVSからアップデートした分で実験してみました。結果は動きませんでした。詳しくは[[ウチの日記>okkez:日記/2005-01-24]]に少しだけ書いておきました。また、夜にでも素の1.4.5_rc1を落として試してみようと思います。 -- [[okkez]] &new{2005-01-24 (月) 16:37:34}; --うちの環境では問題なく動きました :)(素の1.4.5_rc1に従来コンテンツを移行したものです。) -- [[teanan]] &new{2005-01-24 (月) 16:48:30}; -- このハックは単に一つのdefineに応じた分岐を各所に追加しているだけなので、そんなに難しいことはしていません。ですので既存のカスタマイズとのバッティングがあるのではないでしょうか。headers_sent()が示している行などをチェックしてみて下さい。 -- [[henoheno]] &new{2005-01-24 (月) 22:40:17}; --原因が判明しました。permissionの設定ミスでした。README.txtを見ながら全部設定し直したところちゃんとReadOnlyになりました。 -- [[okkez]] &new{2005-01-24 (月) 23:13:42}; -- 了解です :) [[cvs:../devel/release.sh]] の中にパーミッションを強制するスクリプトが埋まっていますので、良ければ使って下さい。 -- [[henoheno]] &new{2005-01-24 (月) 23:22:51}; --ありがとうございます。使わせて頂きます。 -- [[okkez]] &new{2005-01-24 (月) 23:30:42}; - [[cvs:plugin/paint.inc.php]] (1.18): PKWK_READONLY prohibits editing -- paintプラグインの制限もれを修正。ついでに初めて動かしてみましたが、問題なく動きました。 -- [[henoheno]] &new{2005-01-29 (土) 11:50:58}; - [[cvs:plugin/yetlist.inc.php]] (1.21) -- yetlist: 存在しないページに対するハイパーリンクを表示しない -- [[henoheno]] &new{2005-01-29 (土) 12:00:52}; - [[cvs:lib/backup.php]] (1.6) - [[cvs:lib/file.php]] (1.13) - [[cvs:lib/link.php]] (1.4) - [[cvs:lib/trackback.php]] (1.8) --ファイル書き込みに関する既存の内部関数をそこそこ無効に(サードパーティ製プラグインや、カスタマイズへの対応として) -- [[henoheno]] &new{2005-01-29 (土) 22:31:41}; - [[cvs:plugin/topicpath.inc.php]] (1.6) -- topicpath: 存在しないページに対するハイパーリンクを表示しない -- [[henoheno]] &new{2005-01-29 (土) 23:32:53}; - [[BugTrack/788]]: pcommentプラグインでリプライが効かない (提案 => 完了) -- [[cvs:plugin/pcomment.inc.php]] (1.37) - [[cvs:plugin/pcomment.inc.php]] (1.38) -- PKWK_READONLYが有効なとき、replyモードのラジオボタンを表示しない - [[cvs:lib/auth.php]] (1.7) -- Basic認証が永遠に失敗する ここまでの変更は PukiWiki 1.4.5に含まれている ---------------- ***1.4.5_1 リリースまでの修正 [#l6a56c61] - [[cvs:plugin/amazon.inc.php]] (1.13) -- PKWK_READONLY ([[BugTrack/744]]) の制限が amazon プラグインに無かった模様 (^^; - [[cvs:skin/keitai.skin.php]] (1.6) -- PKWK_READONLY 時にNew/Edit/Freeze/Unfreeze のリンクを表示しない。 ここまでの変更は PukiWiki 1.4.5_1に含まれている ---------------- ***1.4.6 リリースまでの修正 [#i753de97] - 管理用画面(diff/backupの削除)へのリンクを表示しない -- [[cvs:plugin/diff.inc.php]] (1.14) -- [[cvs:plugin/backup.inc.php]] (1.23) ここまでの変更は PukiWiki 1.4.6に含まれる ---------------- **コメント [#h95590e2] - [[BugTrack/2487]] topicpath が中間階層にdangling linkを生成する //#comment