2012-03-17 3 views
0

私はプラグインシステムを作成しようとしており、プラグインにはPHPコードが含まれています。 私は、このプラグインをアップロードする領域に人が邪魔になると悪コード をアップロードできるので、プラグインファイルで使用される機能を制限したいと考えています。eval()またはbase64_encode機能が失敗するはずです。アップロードされたPHPファイルで使用される関数を制限するにはどうすればよいですか?

これは正規表現によって行われると思いますが、私はそれについての経験はありません。

は、だから私はその

<?php 

$file = 'plugin.php'; 

$content = file_get_contents($file); 

if(file_is_secure($content)){ 
    upload($file); 
}else{ 
    exit('evil'); 
} 

?> 

のようなものが

<?php 
    $content = file_get_contents('example.php'); 
    preg_match_all("/(function)(\S*\(\S*\))/", $content, $matches); 
    foreach($matches[2] as $match) { 
     $function[] = "// " . trim($match) . "<br />\n"; 
    } 
    natcasesort($function); 
    $functionlist .= "/* Functions in this file */<br />\n"; 
    $functionlist .= "/**************************/<br />\n\n"; 
    $functionlist .= implode('', $function); 
    echo $functionlist; 
?> 

は、私はこのようなものをしたいが、ホワイトリストを作成すると、使用しない機能のために、この例を見たいのですが、関数、それを自己のために"つまり、function();ではありませんfunction name(){}

+3

あなたは、ユーザーが '.php'ファイルをアップロードできるようになっています。 – alex

+1

これは非常に危険なので、これを安全にするために多くの作業を行う必要があります。たぶんあなたはあなたのユーザーが何をできるようにしたいのかを記述することができ、我々は別の解決法を提供することができますか? – Lix

+0

プラグインが限られています。これは、私が使用する関数を制限することを意味します。 –

答えて

4

PHPの拡張子runkitをご覧ください。これは、あなたが削除することができますPHP関数を再定義したり、サンドボックス環境内でPHPコードを実行することができます。

関連する問題