$defaultpageに&を含むページ名を指定すると編集できないページができる†
- ページ: BugTrack
- 投稿者: さばぞう
- 優先順位: 低
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2004-09-25 (土) 22:02:28
- バージョン: 1.4.4
メッセージ†
official:続・質問箱/347
init.phpで、必須のページが存在しない場合、無条件で空のファイルを作成しているから(?)。
- 現状で最新のcvs:lib/init.php (v 1.52) でも、
必須のページ($defaultpage, $whatsnew, $interwiki)で指定されたページ名が存在しない時、
不正な文字(" や< や& など)が含まれたページ名であっても、そのページを作成しています。該当箇所は下を参照。
あとついででここに書きますが、2007年に更新しているにもかかわらず、Copyright が以下のようになっています。
// $Id: init.php,v 1.52 2007/02/11 05:53:30 henoheno Exp $
// Copyright (C)
// 2002-2006 PukiWiki Developers Team
(中略)
/////////////////////////////////////////////////
// 必須のページが存在しなければ、空のファイルを作成する
foreach(array($defaultpage, $whatsnew, $interwiki) as $page){
if (! is_page($page)) touch(get_filename($page));
}
(以降、省略)
ページ名に使ってはいけない文字を知っていれば、この現象は(不正に設定を書き換えられない限り)発生しないとは思いますが、確認をお願いします。
単に、指定されたページ名をチェックするだけで解決するような気も、ってその時の処理方法をどうするかが・・・。 --
- コメント & 検討ありがとうございます。仮にグローバル変数の値をこのタイミングで改ざんする術があったなら、それはもっと致命的な事ができる状況であるので、このリスクについては、管理者の入力ミスないし文字コードの変換ミスあたりだけが発生源となるでしょう。それが表立って手が付けられていない理由だろうと思います。(ほとんどの人は遭遇しないか、一旦問題を明確に理解したならほぼ二度とかからない) -- henoheno
- どうあるべきか: 私としてはこの「空ファイルを作る」処理自体を過剰だと感じています。それぞれのページを利用する関数を「ページが有っても無くても適切に動作する」ように上手に作って、結果的に「必須のページなんて無い」状態にした上で、このコードを消すというのが一番正しいあり方ではないかと思っています。 -- henoheno
- 別の視点: 設定が適切かどうかをチェックさせたいというのであれば、実はそれは最初だけ必要で、それ以降は不要な(過剰な)処理です。ですので PKWK_OPTIMISE のようなフラグによって、過剰な検証をするか/しないかを切り替えられるようにするならば、そのようなチェックがあってもいいと思います。でもそのサイトの寿命の大半はそのようなチェックを必要としていません。 -- henoheno
- Copyrightについて修正させていただきました :) CVSの中まで見ていただいていると実感できるのは有り難いですね。 -- henoheno
- 関連: BugTrack/663 --
関連: $defaultpage が定義されていないとき、".txt" が作成されてしまう†
(from 雑談/11#n7b540e3)
- はまったのでメモがてらここに。wiki/.txtというファイルがあると、テンプレートを指定せずプレビュー(一回目のみ)をすると、wiki/.txtがテンプレートとして呼び出されてしまう。(編集内容が消えてしまう)
wiki/.txtがなぜ出来たのか不明なので、BugTrackには載せません。(こちらでいろいろ改造をしていたので、エラーの際に作成してしまったのかも。)ただし、wiki/.txtが作成される可能性があるなら、対応が必要です。 -- ぃぉぃぉ
- 分かりました。pukiwiki.ini.phpの$defaultpageを設定し忘れ、もしくは空にしてあると、wiki/.txtが作成されます。通常発生しなそうですが、発生すると結構はまります。
必須ページが空の場合はページを作成せずにエラーを出すようにするのがよいかな?ちょっと考えまとめてからBugTrackに載せます。
ご意見ある方よろしく。 -- ぃぉぃぉ
- BugTrack/699 関係ですねー --
- 別の不具合もからんでました。BugTrack2/256 -- ぃぉぃぉ