PEAK XOOPS - アップロードされたzipファイルを解凍する時の注意点 in englishin japanese

Archive | RSS |
PHP
PHP : アップロードされたzipファイルを解凍する時の注意点
Poster : GIJOE on 2006-04-06 10:39:12 (15009 reads)

in englishin japanese
ここに来て立て続けに、アップロードされたzipファイルを解凍した中身を反映するコードを書いてきましたが、実のところ、これらで利用している PEAR::Archive_Zip には、穴があります。

それは具体的には以下の2点です。

(1) ファイルシステムに解凍すると、Directory Traversalがある
(2) 解凍処理でメモリをすべて食いつぶすようなzipファイルが簡単に作成可能である

このうち、(1)に対しては明確な対応策があります。ファイルシステム上に解凍しなければ良いのです。


	$reader = new Archive_Zip( (アップロードテンポラリファイル) ) ;
	$files = $reader->extract( array( 'extract_as_string' => true ) ) ;

とすることで、ファイルシステムには影響なく、$files に配列として保存されます。あとは、適切に保存処理を行えば良いだけです。

その一方、(2)の方は、防ぎようがない、というのが実情です。ライブラリの方にパッチをするとしても、かなり大がかりになってしまいます。

以上から、zipでアップロードして、それをサーバ側で解凍する機能は、なんらかの方法で信用できるユーザに限るしかない、というのが実情です。

ファイルアップロードについては、CSRFの心配はありませんから(そんなのがあったら、今話題のantinnyよりも怖いでしょう)、直接攻撃系だけをケアすれば良いのが救いです。

0 comments
Printer friendly page Send this story to a friend

Comments list

Login
Username or e-mail:

Password:

Remember Me

Lost Password?

Register now!