PukiWiki UPDATING
$Id: UPDATING.txt,v 1.38 2006/06/11 15:35:52 henoheno Exp $


リリース間の互換性に関する記述
==============================

PukiWiki 1.4.7: PukiWiki 1.4.6 との非互換点

   1. 管理者パスワード($adminpass)のデフォルト値が "pass" から、"(判定に絶対
     に失敗する文字列)" に修正されました。
       ※PukiWiki 1.4.6 のパスワードは 1.4.7 に移行できます
       ※PukiWiki 1.4.6 以降、パスワードの保存形式は変更されています。
         (See BugTrack/709)

   2. "ページが更新される度に、プログラムをサーバー内部で実行する機能" の実装
     は、今後グローバル変数($update_exec)ではなく定数(PKWK_UPDATE_EXEC) を使
     用します。
 
     悪意を持った(しかし読み辛い)プラグインを使わざるをえない様に、誰かがあな
     たに仕向けた場合、$update_exec を書き換えるだけでそれが実現可能です。
     ("OSコマンドインジェクション" と呼ばれる脆弱性につながります)

   3. 初期コンテンツ:
      (See BugTrack2/118)

     (ja)
       マルチバイト文字列に依存したファイル名が初期コンテンツに含まれていた問
       題を解消した結果、以下のページの名称が変更されました。
         "整形ルール" => FormattingRules (編集時のリンクから参照されています)
         "ヘルプ"     => Help (上下のナビゲーションから常に参照されています)

       また、以下のページは添付されなくなりました。
         "InterWikiテクニカル" => "InterWiki" (内容を集約)
         "日本語" (削除)

     (en)
       以下のページ名が修正されました。
         "FormatRule" => "FormattingRules"

       また、設定 "$rule_page" は "Text Formatting Rules"(※存在しないページ)
       ではなく "FormattingRules" をデフォルトで指定する様になりました。

     これらの新しいページを追加する場合、忘れずに"凍結"して下さい。

   4. ファイル: 下記のファイルが添付されなくなりました。
     pukiwiki.php    : 必要であれば index.php をコピーしてお使い下さい。
     skin/default.js : どこからも利用されていませんでした。

   5. 脚注: 脚注のリンクに埋め込まれていた "脚注そのもの(文字列)" は、脚注全
     文ではなく、決められた文字数だけ出力します。 (See BugTrack/420)

   6. プラグイン: 以下の付プラグインは、$non_list(一覧しないパターン) に合致
     するページを表示しません。 (See BugTrack2/140, BugTrack2/175)
       attach, popular, related, touchgraph, yetlist


PukiWiki 1.4.6: PukiWiki 1.4.5_1 との非互換点

    1. 管理者パスワードとベーシック認証で用いるユーザーパスワードについて、パ
       スワードの保存方法を九種類の中から選択できる様になりました。この指定方
       法は LDAP で使用されているものと同一で、RFC2307に準拠しています。(うち
       五種類は OpenLDAP 互換)

       そのため、今後はパスワードの先頭に、その保存方法(スキーム)が何であるか
       を明記する必要があります。例えば従来通りMD5ハッシュを用いる場合、先頭に
       '{x-php-md5}' を追加して下さい。

         // md5('pass')
         $adminpass = '{x-php-md5}1a1dc91c907325c69271ddf0c944bc72';

       スキームの宣言がないとき、パスワードは平文で保存されていると解釈されま
       す。

         $auth_users = array(
           'foo'  => 'foo_passwd', // 平文 (推奨しません)
           'bar'  => '{x-php-md5}f53ae779077e987718cc285b14dfbe86',
	             // md5('bar_passwd')
           'hoge' => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx',
	             // LDAP SMD5 'hoge_passwd'
         );

       平文を除く八種類の保存フォーマットについては、強化された md5プラグイン
       で生成・検証することができます。
       ※信頼できない環境ではmd5プラグインを使用しないで下さい

    2. 新しいパスワード保存方法の中に crypt() 関数を使用するものが二種類ありま
       す('{x-php-crypt}', '{CRYPT}')が、crypt() 関数の出力はシステム依存で
       す。他のシステムへ / 他のシステムから設定を持ち越した場合に動作しない
       (異なる結果が出力された結果、認証が通らない)可能性があります。

       新旧双方の環境でmd5プラグインを使い、crypt()の結果を比較することで、あ
       る程度事前に検証する事が可能でしょう。

    3. 新しいパスワード保存方法の中に SHA-1 アルゴリズムを使用するものが三種類
       あります('{x-php-sha1}', '{SHA}', '{SSHA}')が、このアルゴリズムは PHP
       4.3.0 以降、あるいは 'mhash' エクステンションが組み込まれた環境でなけれ
       ば利用できません。したがって該当する環境でなければ、これらのパスワード
       保存方式を利用することはできません。

    4. サーバーと閲覧者へのDoSを回避するためのリミッターとして、プラグインの呼
       び出し回数をチェックする機構が追加されました。この結果、いずれかのプラ
       グインが一定回数 (デフォルト:768回)を越えて呼び出された場合、即座にメッ
       セージとリンクを表示した後、出力処理が終了します。

       そのため、非常に長い文書の中に同一のプラグインを一定個数以上記載してい
       る場合に、閲覧が行えなくなる可能性(編集は可能)をもたらします。そのよう
       な場合、必要に応じて lib/plugin.php にある定数
       PKWK_PLUGIN_CALL_TIME_LIMIT の値を拡大するか、(編集は可能であろうため)
       該当ページのコンテンツを適宜複数のページに分割して下さい。

       この場合のプラグインとは、ブロック型 「#プラグイン名」およびインライン
       型「&プラグイン名;」の全てです。特に後者については「&amp;」のようなHTML
       エンティティも対象になります。(PukiWikiはHTMLエンティティもプラグイン
       であると認識します)

    5. (PukiWiki 1.4.5において) 特にOperaブラウザのために、脚注に対する「相対
       リンク」が「絶対リンク」となるように変更が行われされましたが、ふたたび
      「相対リンク」となるように修正されました。(詳しくは: BugTrack/698)

       (1) calendar_viewerプラグインやincludeプラグインなど、他のページをイン
         クルードするプラグインを使用したページの脚注(これらは相対リンクを想定
         しています) に移動する代わりに、インクルード元のページの脚注に移動し
         てしまう副作用が発生していたため

       (2) 最新のOperaブラウザでは相対リンクによる影響は修正されているとの報告
         を受けているため

       定数 PKWK_ALLOW_RELATIVE_FOOTNOTE_ANCHOR(default.ini.php)の値を変更する
       ことにより、1.4.5 当時の状態(絶対パス)にすることが可能です。

    6. calendar_viewerプラグインが表示するページのタイトル(日付入りのページ名)
       について、表示フォーマットを切り替えられる様になりました。また、デフォ
       ルトが「文字列/YYYY-MM-DD」から「年/月/日 (曜日)」となりました。この
       フォーマットはcalendar_viewerプラグインの先頭で指定する事ができ、元通り
       に直すことも可能です。

    7. 管理者に電子メールで通知を行う関数 pkwk_mail_notify() が作成されまし
       た。この関数は自明な値をあらかじめ保持しますが、その副作用として、
       $notify_header に従来通り From: を設定している場合に From: が重複し、結
       果的にメールが送信されない可能性があります。

       過去のバージョンから設定の値をコピーする場合、 $notify_header には
       From: を含めないように修正して下さい。

       PKWK_OPTIMISE が無効となっている時には、From: が重複しているかどうかな
       どのチェックが行われ、あればエラーを表示します。

    8. 画像のように見えるURIを「インライン画像としてリンク」しないための定数
       PKWK_DISABLE_INLINE_IMAGE_FROM_URI を有効にすることにより、まさに該当の
       機能を実現する「imgプラグイン」は機能が無効になります。(BugTrack2/69)

       その結果、#img(,clear) という表記で「テキストの回り込み指定を解除」する
       機能も無効になります。この機能は img プラグイン とセットで用いるために
       用意されたものであるため、#img(,clear) を部分的に有効にした場合の影響は
       予測できません。

       #imgプラグインと無関係な部分であれば、#img(,clear)の代わりに、それ同じ
       機能を有する #clearプラグイン を使用して下さい。


PukiWiki 1.4.5_1: PukiWiki 1.4.4との非互換点

    1. デフォルトのスキン(enとja)が統合されています。
       1.4.4用にリリースされているサードパーティ製スキンはほぼそのまま利用でき
       ますが、ファイル名を含め、若干の調整を必要とするでしょう。

    2. デフォルトのCSS(screen用とprint用)が統合されています。
       ファイル名に変化がありますが、出力されるCSSの構造的な変化はありません。

    3. :config/plugin/tracker/default の設定が見直されました。
       特に英語版との兼ね合いにより「優先順位(priority)」が「重要度
       (Severity)」に改められましたが、互換性を重視し、既に作成されたページに
       影響が出る部分はそのまま残されています。

    4. 1.4.5以降のスキン、および :config/plugin/tracker/default の内容は新しく
       用意された機能あるいは変数を使用しているため、以前のPukiWikiでは利用で
       きません。

    5. ワームなどによる「非現実的な長さのクエリ文字列」をブロックする機能が盛
      り込まれたため、今までに「極端にページ名が長いページ」に「極端にファイル
      名が長いファイル」が添付されている場合、それを操作できなくなる可能性があ
      ります。この場合、定数PKWK_QUERY_STRING_MAX を調節することで回避すること
      が可能です。
      また、用途がイントラネット向けであれば、PKWK_QUERY_STRING_MAX の値を 0
      にすることにより、この機能を無効にすることができます。

    6. 脚注に対するURLが、ページ内相対リンクのみ(#hogehoge)から絶対パス
       (http://path/to/pkwk?ページ名#hogehoge)に変更されました。
       これは Opera ブラウザの不具合に対するものですが、副作用として
       calendar_viewer() のようなインクルード系のプラグインの中の脚注リンクを
       クリックした場合、個別のページに画面遷移するようになっています。
       (See BugTrack/698 for detail)


PukiWiki 1.4.4: PukiWiki 1.4.3との非互換点

    1. includeプラグインにリミッターが設けられました(デフォルトで４ページまで)

    2. calendar_viewerプラグインにリミッターが設けられました(一テーマ一回まで)
       ※将来のリリースで、数回までに拡張される可能性があります

    3. Apache Webサーバー向けに .htaccess ファイルが同梱される様になりました。
       サーバー上で .htaccess が有効であるとき、例えばattach ディレクトリに保
       存した添付ファイルに直接アクセスすることができなくなります。この結果、
       古いバージョンのrefプラグインや、そこから派生したプラグインはうまく動
       作しないでしょう
       (これらの制限は、.htaccess を削除することで解除できます)

    4. 初期化処理(init.php)が大幅に見直され、PukiWikiにとって不要なグローバル
       変数(特に、危険なデータを含んでいるもの)が積極的に削除(unset)される様に
       なりました。具体的には $_REQUEST, $HTTP_GET_VARS, $HTTP_POST_VARS,
       HTTP_USER_AGENT 関係, REQUEST_URI 関係, QUERY_STRING 関係のデータにアク
       セスしていたサードパーティ製プラグインやカスタマイズ部分は、適切に動作
       しなくなるでしょう

PukiWiki 1.4.3: PukiWiki 1.4.2との非互換点

    1.  trackbackディレクトリに保存されるファイル名の規則が変わりました
        trackback/referer機能をお使いで、1.4.2から1.4.3へ移行される場合は、
        PukiWikir-devサイト (http://pukiwiki.sourceforge.jp/dev/)の、
        "開発日記/2004-03-18" を参照して作業を行ってください。

PukiWiki 1.4: PukiWiki 1.3.xとの非互換点

    1.  [[WikiName]] と WikiName は同じページを指します
    2.  定義リストの書式が違います (:term:description -> :term|description)
    3.  リストや引用文は、下位レベルのリストや引用文を包めることができます
        (1.3.xでは、リストは同種のみ、引用内には引用しか包含できませんでした)


更新履歴
========

※詳細は公式Webサイトを参照して下さい

http://pukiwiki.sourceforge.jp/?PukiWiki/Download
