簡體   English   中英

如何限制上傳的PHP文件中使用的功能?

[英]How can I limit used functions in uploaded PHP file?

我正在嘗試制作一個插件系統,並且該插件包含PHP代碼。 我認為,如果某個邪惡的人到達了上傳此插件的區域,他可以上傳邪惡的代碼,所以我想限制插件文件中使用的功能,例如,如果有eval()base64_encode函數,則上傳將失敗。

我認為這將由正則表達式來完成,但是我沒有經驗。

所以我想要這樣的東西

<?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(){}

看一下PHP的runkit擴展。 這使您可以刪除或重新定義PHP函數,並在沙盒環境中執行PHP代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM