繁体   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