Очистка ненадежных входов, которые создают команды ОС в PHP?
Как удалить ненадежные входы, которые строят команды OS из URL в PHP?
Когда я запускаю автоматическое тестирование Zaproxy, я получаю предупреждение о P1, что ваши входы строят команды OS. Поэтому я хочу знать, как очистить эти команды.
1 ответ
Решение
Использование 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