開発日誌-20160517-別冊-ソースの入手 のバックアップソース(No.2)

* はじめに [#c9c04d61]

このWikiの編集ページで文字列を範囲選択し、タグ挿入のボタンをクリックすると、きちんと選択範囲に対応してタグが挿入され、カーソル位置もそのまま維持されます。私のブログ「[[徒然ガラケー>http://dennou-gedou.jugem.jp/]]」の編集ではそうはならないので、どうにかならないものかと調べてみました。

編集ページのソースを読んでみると、ボタンをクリックしたときには
 pukiwiki_tag('size');
といった関数呼び出しが発生することが分かります。これの実体がどこにあるのをブラウザ越しに捜すのは骨が折れるので、''ソースコードを入手してgrepしました''。そのソース入手に苦労したので、ここにメモしておきます。

&aname(TodoSelectionUpdatingScript);&color(Red){'''結局どういうタグを書くべきなのかは、ぜんぶ調べ終わってから別のところに書きます。'''};

* 公式サイトは古くなっている [#iffeff35]

[[公式サイトのダウンロードページ>http://pukiwiki.cafelounge.net/plus/?Download]]から、1.4.7plus-u2-i18n rev1726というバージョンが入手できます。

ところが、[[トップページ>http://pukiwiki.cafelounge.net/plus/?FrontPage]]を開くと、こんなことが書いてあります。
> 19 December, 2011&br;XSS脆弱性の修正 -- i18n
> PukiWiki Plus!を使用して、特定のアクセスを行うとクロスサイトスクリプティングが発生する脆弱性が存在します。
> PukiWiki Plus!を使用している方は、以下のファイルの差替をお願いいたします。
- %%%plugin/comment.inc.php%%%(rev. 1815)

ダウンロードページにあるバージョンは rev 1728 です。それより後から差替が必要になったことが分かります。&br;
…が、この差替ファイルはリンク切れになっています。ダウンロードページの「開発リリース」のリンクもリンク切れです。

* GitmHubから入手しよう [#g0ca0f95]

で、トップページをよくよく見てみると、こんなことが書いてあります。

> 05 March, 2012&br;githubに仮移行
> githubに仮移行しました。
- http://github.com/miko2u/pukiwiki-plus-i18n

> svnリポジトリ停止予定
> 2012/03/31 で svnリポジトリを停止予定です。また、2012/03/06 より svnリポジトリは断続的に停止することがありますので、あらかじめご了承ください。

ここに書かれているアドレスを開くことで、やっと最新版が手に入ります。

- UNIX系OSなどで、gitコマンドが使える場合は、
 git clone http://github.com/miko2u/pukiwiki-plus-i18n
-
とすれば、カレントディレクトリの下に展開されます。
- 上記のページを普通のWebブラウザで開いて、「Download ZIP」というボタンをクリックしてもOKです。

* きちんと修正されていることを確認する [#x448ee0f]

上記のアドレスをWebブラウザで開くと、関係のファイル・フォルダの一覧が出てきます。

まず、「plugin」というフォルダ名の右側にある「[[XSS脆弱性の修正(JVN#76515037)>https://github.com/miko2u/pukiwiki-plus-i18n/commit/a2083e106d235744732ed355fd161e632b13405a]]」という文字列をクリックすると、2011年12月17日に修正が行われていることが分かります。

さらに、「skin」フォルダの行にも「XSS脆弱性の修正」とあって、その行の右端には「2 years ago」とあるので、それも確認しておきましょう。「[[「XSS脆弱性の修正」の文字列をクリック>https://github.com/miko2u/pukiwiki-plus-i18n/commit/4e83f57b5129fd6921331870ca53f6f197f55f39]]すると、修正点が表示されます。

&aname(TodoPukiWikiPlusXSS2014Examination);&color(Red){'''どこか変なコードですが(たぶん、2つめのlastIndexOfの引数は '?' じゃなくて '#' だと思う)、検証はまた後日にさせてください。'''};