2016-02-08 2 views
1

Как удалить ненадежные входы, которые строят команды os из url в php?очистка недоверенных входов, которые создают команды os в PHP?

Когда я запускаю автоматическое тестирование zaproxy, я получаю предупреждение P1, что ваши входы строят команды os. Поэтому я хочу знать, как очищать эти команды.

+1

Никаких специальных требуются действия здесь. Вы, очевидно, должны проверять и дезинфицировать все отдельные данные, которые вы получаете от клиентов. И ваша реализация должна _never_ позволять клиентским данным каким-то образом использоваться в потоке выполнения, так как аргумент для оператора 'require' или аналогичного. – arkascha

ответ

0

Используйте 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

Смежные вопросы