開発日記
- GODo2004: Get into OpenSource Hokkaido!!
ゆう 2004-07-14 (WED) 17:45:33
このイベントでPukiWikiの展示したいのですが、
当日手伝ってくれるスタッフ募集しますー。誰かいませんかー?
あまり時間がないので、このイベントに興味のある方はゆうさんに直接連絡して下さい。
- 内部関数名の変更: sanitize() => input_filter()
- cvs:init.php (v1.4:1.90)
- cvs:func.php (v1.4:1.66,1.67)
- この関数にデータを通すことで、サニタイズが完了するわけではありませんので XD
sanitize() を使用している外部プラグインが存在するかもしれませんので、 ラッパー関数として sanitize() は残してあります。
- 後から考えると、この理由付けはおかしいですね。input filter としての役割で動作しているものが、外部プラグインが呼ぶだなんて、想定外の状況でしか起こりません。現実は小説よりも奇なり、ではありますが -- henoheno
- diff.inc.php の修正
- cvs:plugin/diff.inc.php (v1.4:1.6, 1.7)
- $postの代わりに$varsを使う様に修正
- plugin_diff_delete()について、diffデータが存在しないページ名(※異常な値)を与えると、期待されているインターフェースを無視して空の値をreturnし、結果的にFrontPageを表示してしまう実装になっていました。とりあえず英語でそれらしいメッセージを表示する様に修正しました。
- 表示することの是非はともかく、「パスワードが間違っています。」というメッセージを適切に表示します。(普通にPukiWikiを使用している分には表示されない状況になっていたのを修正しました)
- パスワードしか入力しない場合は、是非もなく誰でも間違えだと分かりますからね。しかし、ユーザIDとパスワードの2つの項目を入力している場合は、どちらを間違えたのかを教えるのは、ご法度なので是非というレベルじゃない。ということだと思います。今回は、1項目だけなんでしょ?ならば適切な処置だと思いますけどね。-- upk
- ツッコミありがとうございます :) 確かに状況が変化しないという事がすなわち「パスワードが正しくないかもしれない」という事を意味するのですが、私個人としては攻撃者にはできる限り冷たくしたいので :D 違っている、というメッセージすら不要にしたいと思ってしまうのですね。PukiWikiが初めて、という方には優しく無くなってしまう上に、パスワードを打ち間違えたのか、それともPukiWikiの故障なのかのかが解り辛くなるという欠点もありますけれど。 -- というのが、私の考えていた是と非でした。(今回のメッセージを削るつもりはないですよ) -- henoheno
- cvs:plugin/diff.inc.php (v1.4:1.8)
- パスワードが正しくない時に2秒のウェイトをかけることで、さりげなく攻撃者を妨害します。
管理者パスワードのためのシステム関数を追加†
ところで管理者パスワードの判定ルーチンがあちこちのプラグインに散在している現状は良くない(抜け道ができすぎる)ので、システムが関数を提供した方がいいですよね :) ということで片付けました。
- Added pkwk_login() to check administrator password by system
1.4 に同梱されている範囲では以上です。
- お疲れさまです。ちょっと、この実装レベルだと、pkwk_login() って、なんだかしっくりこないんですけどね。パスワードの要求画面も出して、その上で真偽を戻すなら、login かなぁ。全部、この関数にお任せできるレベルだといいなぁ。いまのままだと、ちょっと厳しいと思いませんかね? となると、使いたいプラグインとかが、使いまわしたいパラメータを、所定の配列に保存などして POST 後、また、戻す。みたいなことまで行わないと、汎用的じゃないかなぁ。まぁ、ぼちぼとってところですかね? あと、この行為は、admin というイメージなのですが、pkwk なんですかね? -- upk
- お疲れ様です。「管理者パスワードを取り扱うルーチンが集約されていない」という問題の中でも、最も下層の対策が今回のものです。どのようなログイン画面を(HTMLで)表示したいか、という部分は既に多様化しています。また、今後の改良を許容するためにも、このルーチンのコアの部分はHTMLに依存してはならないと考えました(やるならば、この関数を呼ぶGUIラッパーを別途用意すべきという事です :) )。名前は私も最初 login() という名前をイメージしたのですが、あまりにも単純すぎる関数名は他の製品にPukiWikiを組み込むケースなどで問題になりそうですから、システム関数の冠詞としてpkwk_ を付けておきました :) -- henoheno
- どうして login_admin などではなくて login なのかという点ですが、現在実装されている編集認証や、将来出て来るかもしれないセッション対応などについてもここに集約できないかと考えたからですね :) -- henoheno