よくきたはてダ このページをアンテナに追加 RSSフィード Twitter

2007-12-17

まだまだ生産されるセキュリティホール

http://blog.boreal-kiss.com/2007/12/17113928.html

いい情報っすね!!ってサンプル見てみると

<?php

	//readfile関数の内容を標準出力せずに内部バッファに保存させる
	ob_start();
	
	//FLASHから送信されたURL先のファイル内容を読み込む(標準出力されない)
	readfile($_POST['url_from_flash']);
	
	//内部バッファに保存された内容を変数に格納する
	$str = ob_get_contents();
	
	//内部バッファの開放
	ob_end_clean();
	
	//上記で変数に格納された内容がEUC-JP, Shift-JIS, UTF-8の場合、UTF-8に再エンコーディング
	echo mb_convert_encoding($str,'UTF-8', 'EUC-JP,Shift_JIS,UTF-8');
	
	//UTF-8にエンコーディングされた内容を標準出力(出力内容がFLASHへ送信される)
	echo $str;
?>

これってコレくらい短くなるよね.ありえないコードだけど.

<?php
	$str = file_get_contents($_POST['url_from_flash']);

	//上記で変数に格納された内容がEUC-JP, Shift-JIS, UTF-8の場合、UTF-8に再エンコーディング
	echo mb_convert_encoding($str,'UTF-8', 'EUC-JP,Shift_JIS,UTF-8');
	
	//UTF-8にエンコーディングされた内容を標準出力(出力内容がFLASHへ送信される)
	echo $str;
?>

っでね.とりあえずこのページを発見したらウェブサーバーから読めるファイルは読み放題ってわけですね.おめでとうございます.

というかファイル関数でリモート取るのいい加減やめたほうがいいと思うんだけどね.

elfelf 2007/12/17 20:57 文字エンコードの自動認識を期待しているところもダメコード.
典型的だなぁ〜〜〜

borealkissborealkiss 2007/12/18 17:02 該当プログラムの作成者です。少し調べたところreadfileで読み込むファイルによってはサーバー自体がクラッシュする可能性があるとのこと。この部分に関するダメ出しという認識でよろしいでしょうか。現プログラムなんですが、redfileで読み込むファイルは第三者が任意指定できる形をとっています(入力を想定しているものは第三者のRSSフィードURL)。FLASHプレイヤーはドメイン間の通信を基本的に許可していないためこのような方法を用いました。セキュリティに関する具体的な改善案があれば是非教えていただきたいです。

elfelf 2007/12/19 13:34 borealkiss さん>>

ファイル操作関数群をリモートコンテンツの取得として利用することは borealkiss さんのサイトにあるコメントの内容の通り
意図しないサーバー内ファイルの取得が行われたり,第三者のコンテンツの取得に利用することが可能になります.

値の妥当性をきっちり調べてファイル操作関数群を今回のように扱うというのもアリといえばアリですが,セキュリティ的理由でこれら関数群はリモートアクセスできないようにしているサーバーも多数存在しますし,そうするべきです.

いまどきはリモートのコンテンツ取得にはこれらを使うことが主流です.

http://pear.php.net/package/HTTP_Client
http://pear.php.net/package/HTTP_Request

PEARを入れることの手間を含めたデメリットも考えられますが,それを軽減するための手段もないわけではないですし,
今後は検討されるといいでしょう.

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証