Как я могу ограничить используемые функции в загруженном файле PHP? - PullRequest
0 голосов
/ 17 марта 2012

Я пытаюсь создать систему плагинов, которая содержит код 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(){}

1 Ответ

4 голосов
/ 17 марта 2012

Взгляните на расширение runkit для PHP.Это позволяет вам удалять или переопределять функции PHP и выполнять код PHP в среде песочницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...