Используйте escapeshellarg()
и escapeshellcmd()
, чтобы избежать данных для использования в качестве команды оболочки или аргумента.
// escapes a single argument
// sample input: "/foo/bar/"
$argument = escapeshellarg($userInput1);
exec("ls $argument");
// escapes all special characters like [];{} for usage in command line
// sample input: "ls -l; rm -rf /"
$command = escapeshellcmd($userInput2);
exec($command);
Вы должны использовать обе команды вместе, чтобы пользователи не могли выполнять произвольные запятые на вашем сервере.
Документация:
http://php.net/manual/en/function.escapeshellarg.php http://php.net/manual/en/function.escapeshellcmd.php
Никаких специальных требуются действия здесь. Вы, очевидно, должны проверять и дезинфицировать все отдельные данные, которые вы получаете от клиентов. И ваша реализация должна _never_ позволять клиентским данным каким-то образом использоваться в потоке выполнения, так как аргумент для оператора 'require' или аналогичного. – arkascha