Есть ли другой способ вызвать эту функцию, кроме использования eval php? - PullRequest
5 голосов
/ 27 сентября 2011

Итак, в поле базы данных есть функция php. Вот как это выглядит:

'$put_fname_fn = function($filename) {
    return $filename.'.Z';
};'

Я выполняю это так:

$code = fetchFromDatabase(); // Get the function string
eval($code);
$put_fname_fn('MYFILE.TXT'); // Convert it to MYFILE.TXT.Z

Есть ли более изящный способ вызова пользовательской функции? Я стараюсь избегать использования eval, но у меня нет другого способа сделать это.

1 Ответ

9 голосов
/ 27 сентября 2011

Нет другого способа оценить код в PHP. (Вы можете написать код в файл и include это, но это просто скрытый eval.)

Тем не менее, вам, вероятно, следует пересмотреть дизайн своего приложения. Оценка кода из базы данных - это ОЧЕНЬ БОЛЬШОЙ РИСК БЕЗОПАСНОСТИ : если ваша база данных взломана (с помощью простой и распространенной атаки с использованием SQL-инъекции), вы одновременно даете злоумышленнику выполнение произвольного PHP-кода .

...