* Pukiwikiを遠隔ロックする機能 [#ccee119e] - ページ: [[BugTrack2]] - 投稿者: [[フォルグロス]] - 優先順位: 普通 - 状態: 提案 - カテゴリー: 本体新機能 - 投稿日: 2007-03-10 (土) 11:45:38 - バージョン: 1.4.7 ** メッセージ [#o2ec36b7] 掲示板系のCGIが「荒れる」というのはよくあることですが、全体がBBS状態のPukiwikiが荒れるとなるとえらいことです。 もし「あっ!荒れてる!」と思ったとき、会社、学校、電車の中、座敷牢からでも気軽にPukiwikiを遠隔ロックする方法を取り付けてはどうでしょうか。 試作品は[[PukiWiki改造/pukiwikiを遠隔ロックする>http://aden.jias.jp/dt/?PukiWiki%B2%FE%C2%A4%2Fpukiwiki%A4%F2%B1%F3%B3%D6%A5%ED%A5%C3%A5%AF%A4%B9%A4%EB]]です。 試作品の機能は2つです。 -管理者パスワードがあれば、どこからでもPKWK_READONLYフラグを立てられます。 -同じ方法で「カバー機能」を取り付けました。readプラグインが「しばらくお待ち下さい」系の言葉しか返さなくなります。 経緯は[[official:欲しいプラグイン/285]]です。 試作品は、本体への変更が明らかにおかしな場所に行われてます。(pkwk/lib/pukiwiki.php内でdefine定義やらPKWK_READONLY定義やらやってます。) ただ、index.php内にif文をおきたくないし、かといってpukiwiki.ini.phpが読み込まれてからPKWK_READONLYを定義しても遅いようなので、とりあえずこの位置におきました。 -------- - 基本的な事は [[BugTrack2/217]]と一緒です (^^; -- [[henoheno]] &new{2007-03-12 (月) 00:33:11}; - はい、確かに面白い方向に展開していると思います。私が[[official:欲しいプラグイン/285]]で触れている遮断機能というのは、[[sshサーバーに対するbrute-force attackを検知してファイアウォールによって一時アクセスを遮断するような>http://www2s.biglobe.ne.jp/~nuts/labo/inti/ipt_recent.html]]((Googleに聞いてみた例を挙げさせていただいただけで、こちらのサイトは今回始めて見ました)) 雰囲気のもののつもりでした。でもそんな事どうでもいいです。リモート座敷牢の中から管理者が簡単に PKWK_READONLY を有効にしたり、(どうしようもない負荷の一時しのぎなどのため)仮閉鎖の状態にして耐え忍ぶ事ができる様にする、というのはとても面白いと思います。 -- [[henoheno]] &new{2007-03-12 (月) 00:41:41}; - pkwk_login() に依存しているような気がしますが、本当にロックから復帰できますか? ((pkwk_login()は、PKWK_READONLYによって永遠に失敗する様になるため。)) 勘違いでしたらすいません。 -- [[henoheno]] &new{2007-03-12 (月) 00:46:48}; - このプラグインから管理者パスワードが正しいかどうかを試行できるということは、(これの存在を知らない人には効果があるでしょうけれど)管理者パスワードに対するbrute-force attackはこれでは防げないでしょう。一つの割り切りといえばそうなります。 -- [[henoheno]] &new{2007-03-12 (月) 00:49:12}; これまた、使い方がさっぱり書いてなかったので追記します。 簡単に言って今回やっていることは、フラグファイル(2つ)の定義と、フラグが立っているか調べて特定の動作をする。あとはフラグファイル自体の操作の3アクションです。 :定義| フラグファイルとして使用する2つのファイルを定義します。 :フラグが立っていたら特定の動作をする| ::READONLYする| (pukiwiki_root)/easylock_readonly.lockファイルをフラグファイルとして、このファイルが存在すればdefine(PKWK_READONLY,1);します。 ::カバーをかける| 同じくeasylock_cober.lockで、read.inc.phpを呼び出したときこのファイルが存在すれば、get_sourceするよりも早く常に固定文字列を返します。 :リモートからロックファイルをいじる仕組み| index.php?cmd=easylock形式でプラグインを呼び出すと管理人パスワードとフラグファイルの操作を尋ねられます。ログイン後は、フラグファイルをtouchかunlinkして報告するだけです。 -カバーをかける実装方法はいくらでもあるかも知れません(.htaccessに勝手に1行付け加えてbasic認証にする、index.phpのパーミッションを変える、get_sourceが常に空文字を返す、.htaccessでDirectoryIndex index.htm index.phpなどを定義して、カバーを掛けたいときだけindex.htmを自動作成、管理者はindex.php(ファイル名変更しておくとなおよし)に直行する等)が、一番簡単で効果絶大っぽそうなところとしてread.inc.phpを選びました。カバー機能は「荒れているとき、wikiを読みにきてくれた人に迷惑をかけない」ためのものと考えているので、read.inc.php以外の手段でわざわざ隠された中身を見ようとする人まで拒絶する必要性は薄いと考えています。(いちおうREADONLYなのでなにもできません。) -カバーとREADONLYは別々のフラグで別個に動作します。READONLYにはするけどカバーをかけない、という動作は可能です。ただし、カバーだけかけてREADONLYにしない、というのは結局荒らされるので、easylockプラグイン内にその選択肢を用意していません。 -pkwk_login()に依存:そういえばそうですね。試作は動いてた気がしますが。ちょっと見てみます。 -管理者パスワードが正しいかどうかを試行できる:今回は「荒れているとき、wikiを読みにきてくれた人に迷惑をかけない」ところが主眼ですので、正直そこは観点にありませんでした。 --[[BugTrack2/217]]を導入してもらえば試行があっても気づけるかと思います。 --でもそれを観点に含めてもいいですよね。せっかくなら。 --パスワード抜き取り試行の件ですが、管理者パスワードではなくREADONLY化専用のパスワードを使うようにするのはどうですか? -- [[ぃぉぃぉ]] &new{2007-03-13 (火) 19:04:02}; --と思ったけど、凍結でもなんでも、管理者パスワードの試行は可能か。それと何か違うんですかね? -- ぃぉぃぉ - Pukiwiki2の談義に「フレームワークの機能をなるべくプラグイン化する」という話があったようなうろ覚えなのですが、今回の試作品はPKWK_READONLYをiniファイル直指定から動的設定に出すという野望も若干混じってます。 -- [[フォルグロス]] &new{2007-03-13 (火) 18:04:39}; #comment