Добавить в корзинуПозвонить
Найти в Дзене
Пятиминутка PHP

Как отключить eval() в PHP 8?

Интересная статья от Александра Майорова: https://tech.geekjob.ru/disable-evil-eval-in-php-8/ Для начала важно уточнить, что eval() — это не функция, а языковая конструкция. Если бы это была функция, то можно было бы воспользоваться директивой в php.ini файле disable_functions. В своей статье Александр рассказывает, как нашел фрагмент кода в исходниках PHP, который запускает выполнение eval и как написать собственное расширение, отключающее eval. При этом можно выдать явную ошибку «eval не пройдёт!» или ошибку замаскированную под синтаксическую. В целом хорошая тема для RFC в будущие версии PHP — возможность отключить eval через настройки в php.ini.
Вывод phpinfo() сообщающий об отключённом eval
Вывод phpinfo() сообщающий об отключённом eval

Интересная статья от Александра Майорова: https://tech.geekjob.ru/disable-evil-eval-in-php-8/

Для начала важно уточнить, что eval() — это не функция, а языковая конструкция. Если бы это была функция, то можно было бы воспользоваться директивой в php.ini файле disable_functions.

В своей статье Александр рассказывает, как нашел фрагмент кода в исходниках PHP, который запускает выполнение eval и как написать собственное расширение, отключающее eval. При этом можно выдать явную ошибку «eval не пройдёт!» или ошибку замаскированную под синтаксическую.

В целом хорошая тема для RFC в будущие версии PHP — возможность отключить eval через настройки в php.ini.