Очистка ненадежных входов, которые создают команды ОС в 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

Другие вопросы по тегам