[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 メーリングリストの案内