Задать вопрос
@Artem0071
Безработный mr. Junior

Как сделать whitelist PHP функций в eval()?

Можно ли как то сделать так, чтобы была возможность создать whitelist функций и методов которые могут быть выполнены в eval'e?

Например, есть список неких параметров:
$USER, $DATA, $MESSAGE, итд

И нужно чтобы некий пользователь мог создать какую то функцию, в которой мог бы заюзать данные параметры и вернуть какой то результат

Можно ли вообще сделать что то подобное? Как вообще работают различные writephponline, onlinephpfunctions и прочие

Я почитал что у них "This script works with a whitelist of functions. All functions that do not require disk, system or network access are whitelisted, others blacklisted. Max execution time is set to 3 seconds.".

Но какой то подробной инфы о там как такое можно реализовать я особо найти не смог
  • Вопрос задан
  • 184 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 2
@bkosun
Никак, это невозможно.

Вам нужна песочница, или виртуальная машина.

$options = array(
  'safe_mode'=>true,
  'open_basedir'=>'/var/www/users/jdoe/',
  'allow_url_fopen'=>'false',
  'disable_functions'=>'exec,shell_exec,passthru,system',
  'disable_classes'=>'myAppClass');
$sandbox = new Runkit_Sandbox($options);

$sandbox->ini_set('html_errors',true);

// ...

$sandbox->eval('var_dump(isset($foo));');


https://php.net/manual/ru/runkit.sandbox.php
Ответ написан
irishmann
@irishmann
Научись пользоваться дебаггером
как такое можно реализовать я особо найти не смог

Плохо искали, Corveda/PHPSandbox
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы