Как удалить ненадежные входы, которые строят команды OS из URL в PHP?
Когда я запускаю автоматическое тестирование zaproxy, я получаю предупреждение о P1, что ваши входные данные создают команды os. Поэтому я хочу знать, как очистить эти команды.
использование 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
Других решений пока нет …