md5プラグインが意図しないところで動く

修正

PukiWikiを使いmd5ハッシュを計算する方法として、PukiWikiはかつて以下のように、URIの中にパスワード文字列を含めて(つまりGETメソッドで)呼び出す方法が取られていました。

 http://example.com/pukiwiki.php?md5=password

しかしこの場合、proxyサーバーやWebサーバーにパスワード文字列のログが確実に残るため、「現在もこの呼び出し方を受け付けますが」、推奨はされていません。

この後方互換のためのコードが、「md5」というキーを含むあらゆるURI(GETメソッド)およびフォーム入力(POSTメソッド)に副作用をもたらしていたため、少なくとも現行のプラグインに対しては問題を起こさない様に修正を行いました。

メッセージ

バグ報告というか、「こんな事がありました」という報告です。

プラグインを作っていて気付いたのですが、

<form method="post" action="index.php?plugin=xxx&amp;mode=update">
<div>
  <input type="checkbox" name="md5" value="t" checked="checked" />md5.inc.php
<input type="submit" value="更新"/>
</div>
</form>

というようなフォーム*1でPOSTすると、md5プラグインが動いてしまいました。 これは、正常な動作なんでしょうか?

PukiWiki-1.4.6_rcで確認しました。

補足

何かの参考になるかも知れないので自分が作っていたプラグインの動作概要を書いておきます。 deldel.inc.phpのような動作をするプラグインを作っていました。動作は、

  1. 認証
  2. 一覧表示
  3. 好みのものにチェックを入れてPOST
  4. 終了メッセージを表示

というイメージです。通常であれば、3->4は滞りなく実行され終了メッセージも表示されるのですが、 上記のようにname="md5"がPOSTされている場合のみ、md5プラグインが実行されます。このとき、 4は全く実行されず、いきなりmd5プラグインの画面に遷移します。md5プラグイン側で$get,$post,$varsの中を 見たところ、

$get['cmd']  = 'md5'
$post['cmd'] = 'md5'
$vars['cmd'] = 'md5'

となっていました。

私の手元では、name="プラグイン名"の部分にprefixを付けることでこの問題を回避するようなプラグインの実装にしました。




*1 xxxはプラグイン名です

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-07-27 (水) 23:19:21
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.195 sec.

SourceForge