Почему нельзя выполнять входящий PHP-код через eval

Риск eval() с данными запроса и безопасная замена: фиксированный список разрешённых действий без исполнения пользовательского PHP-кода.

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

<?php
$actions = [
    'status' => static fn(): string => 'OK',
    'date' => static fn(): string => gmdate('Y-m-d'),
];
$action = $_GET['action'] ?? 'status';
if (!is_string($action) || !isset($actions[$action])) {
    http_response_code(400);
    exit('Неизвестное действие');
}
header('Content-Type: text/plain; charset=UTF-8');
echo $actions[$action]();

Здесь посетитель выбирает только ключ, а функции определяет разработчик. Не заменяйте eval() динамическим include, shell-командой или произвольным именем функции из запроса: это сохраняет опасную границу доверия. Для действий, меняющих данные, нужны авторизация, проверка прав и защита от CSRF.

Проверенные источники

www.php.net. Проверено 10 октября 2026 года.

Все материалы раздела «Программирование»Каталог инструментов

Ещё в разделе «Программирование»