../

見たくない画像を貼り付けられるのを防ぐ (自サイトの画像のみ許可)

概要

いまのところ事故に会ったことはないのですが、URL貼り付け放題のwikiにとって、開いたページにいきなりドカンとグロ画像が貼られたり、エロ広告画像が貼られたりということがあるんじゃないかという心配を減らします。

PKWK_DISABLE_INLINE_IMAGE_FROM_URIとの違い

既存の設定項目PKWK_DISABLE_INLINE_IMAGE_FROM_URIを有効にするとすべての画像が文字列として表示されますが、自サイト内にある画像ファイルでありさえすれば画像として表示される部分が異なります。

なお、「自サイト内の画像は安全」という前提ですので、pukiwikiへのファイル添付が自由に行える状況や、サイト内に画像掲示板系のCGIがある場合には無意味です。(ただし後者の場合は、問題のあるURLを禁止指定にするよう改造するという手はあります。)

実施概要

  • refプラグインを使わずに画像を貼り付けることを停止。
  • refプラグインで外部サイトから画像を持ってくることを停止。
  • imgプラグインを停止。

変更箇所

pukiwiki1.4.7で実施しています。

やることは大きく3箇所です。

  1. wikiのmake_linkにより、画像系拡張子を持つURLがimgタグに変換されるのを防止。
  2. refプラグインにより、外部サイトから画像を持ってくるのを防止。
  3. imgプラグインを削除。

まず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プラグイン側には、以下の要素を盛り込みます。

  1. 第1パラメタが「http://」ではじまるとき、エラーとして処理する。
  2. 上記のPKWK_DISABLE_INLINE_IMAGE_FROM_URIを1に変えることにより、ref自身もimgタグではなくaタグを出力するようになるので、これを常にimgを出力するように変更する。

「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プラグインですが、こちらは過去互換性のためだけに残っているようなので、使用していなければプラグインごと削除しておくのが手っ取り早いでしょう。

コメント

  • 上記のような防止策を思いついたのですが、皆様そういう事故はないでしょうか。その他ツッコミをお願いします。 -- フォルグロス 2006-10-21 (土) 16:14:43
  • この改造のポイントが今一わからないのですが、PKWK_DISABLE_INLINE_IMAGE_FROM_URI が実現していることと比べた違いは何ですか? -- 2006-10-21 (土) 20:05:47
  • PKWK_DISABLE_INLINE_IMAGE_FROM_URIを1にすると画像がすべて文字列として表示されます(と思ってます)が、自サイト内にある画像ファイルでありさえすれば画像として表示される部分に差があります。やっぱり画像が全部URLになってるページは見た目がさびしいので。(正直PKWK_略_URIは改造着手後に発見しました。) -- フォルグロス 2006-10-22 (日) 20:57:30
  • PKWK_を2に設定すると自サイトの画像のみ許可、の方が、既存システムと共存しやすい気がしました -- pai 2007-09-08 (土) 15:18:16

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-12 (木) 20:44:15
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.182 sec.

OSDN