[PHP-users 33370] Re: PHPでサーバのディレクトリを削除

岡本 基 okamoto @ airnet.jp
2008年 3月 7日 (金) 10:48:09 JST


岡本です。

とりあえず即興的に作っただけなので、特にサニタイズはしないで書いたのです
が、それが混乱を招いたみたいですね^^;

以下はあくまで参考程度に・・・・

<?php
	function idCheck($id){
		if(preg_match("/^\w{8}$/",$id)){
			return true;
		}else{
			return false;
		}
	}
	
	$subdir		= $_POST['ID'];
	
	
	if(!idCheck($subdir)){
		print "ID ERROR!";
		exit();
	}
	
	$dir		= "/usr/local/apache/htdocs/data/".$subdir;
	$cmd		= "rm -rf ".$dir;
	if(!file_exists($dir)){
		print "FILE DOES NOT EXISTS!";
		exit();
	}
	
	$res		= system($cmd);


?>
今ざっと作ったものなので、本当に参考程度にして下さい。
#変に突っ込まれても困るのでw

単純にIDは半角英数字+アンダースコアの8回の繰り返しであると言う、
決まりごとがあると仮定して作ってます。
多分IDを使う事を想定しているのであれば、
恐らくは何かしらの規則性のある物を使用していると思うので・・・・・

あと、今まで書かれてきた内容をみると、正直system()を使用するプログラム
はオススメ出来ません。
ちょっと危険な気がします・・・

管理者が使用しているとしても、もしバグが存在し、POSTで投げられてきた値に
変な値が入ってしまっていたら?等もある程度は想定すべき点なので。。。。

とりあえずの要件は今までのコードで満たせるかと・・・

でわでわ・・・



On Fri, 07 Mar 2008 10:11:58 +0900
t-bird <t-bird @ connectworks.jp> wrote:

> オクムラさん ありがとうございます。
> 
> この作業は管理者画面でしか行えないようになっておりますし、$_POST['ID']
> についてはページからページへ渡すだけで実際に画面上で打てる項目ではない
> のであまり気にしていませんでした。
> とりあえず空白の時以外に実行する設定にはしていたのですが、無配慮でした。
> ご指摘ありがとうございます。
> 
> chmod 4555 /bin/rm
> 
> の件はいろいろ勉強してみます。
> 
> 一通り検索した感じでは、セキュリティー上chmodしても1日たつと元に戻って
> しまうという記事もあり、すんなりいかなそうです。
> 
> 調べてやってみます。
> 
> --
> サトウ




PHP-users メーリングリストの案内