いまのところ事故に会ったことはないのですが、URL貼り付け放題のwikiにとって、開いたページにいきなりドカンとグロ画像が貼られたり、エロ広告画像が貼られたりということがあるんじゃないかという心配を減らします。
既存の設定項目PKWK_DISABLE_INLINE_IMAGE_FROM_URIを有効にするとすべての画像が文字列として表示されますが、自サイト内にある画像ファイルでありさえすれば画像として表示される部分が異なります。
なお、「自サイト内の画像は安全」という前提ですので、pukiwikiへのファイル添付が自由に行える状況や、サイト内に画像掲示板系のCGIがある場合には無意味です。(ただし後者の場合は、問題のあるURLを禁止指定にするよう改造するという手はあります。)
pukiwiki1.4.7で実施しています。
やることは大きく3箇所です。
まずmake_linkですが、これは設定項目があるのでそれを利用。/pukiwiki.ini.phpを開き、以下の行の矢印部分を0から1へ変更します。
if (! defined('PKWK_DISABLE_INLINE_IMAGE_FROM_URI')) define('PKWK_DISABLE_INLINE_IMAGE_FROM_URI', 0); //←ここを1に変更
refプラグイン側には、以下の要素を盛り込みます。
「http://」防止のほうは、/plugin/ref.inc.phpを開き、以下の通り数行追加します。
// 第一引数: "[ページ名および/]添付ファイル名"、あるいは"URL"を取得 $name = array_shift($args); $is_url = is_url($name); //※↑ここまで既存部分 //※↓ここから追加部分 if($is_url) { //※↓「アクセス先のURLがhttp://~.domain.jp/のサイト中ではない場合にエラーとする」の改造例。 //if(0==preg_match('/^http:\/\/[\w]+\.domain\.jp\//',$name)) //※↓「アクセス先がhttp://を含んでいたらエラーとする」の改造例。 if(FALSE===strpos('http://',$name)) {//サイト外を呼び出していたらエラーとする $params['_error'] = 'このプラグインでサイト外へアクセスすることは出来ません。'; return $params; } } //※↑ここまで追加部分
PKWK_DISABLE_INLINE_IMAGE_FROM_URIのほうを常にimgにするのは、以下のようにrepプラグイン内の一部分をコメントアウトすることで処置。
// if (PKWK_DISABLE_INLINE_IMAGE_FROM_URI) { // //$params['_error'] = 'PKWK_DISABLE_INLINE_IMAGE_FROM_URI prohibits this'; // //return $params; // $url = htmlspecialchars($name); // $params['_body'] = '<a href="' . $url . '">' . $url . '</a>'; // return $params; // }
最後にimgプラグインですが、こちらは過去互換性のためだけに残っているようなので、使用していなければプラグインごと削除しておくのが手っ取り早いでしょう。