Представим себе, что у нас есть простой скрипт php, который должен получить ssh_host , ssh_username , ssh_port из массива $ _GET и попытаться подключиться с помощью этих параметров к SSH.
$port = escapeshellcmd($_GET['ssh_port']); $host = escapeshellcmd($_GET['ssh_host']); $username = escapeshellcmd($_GET['ssh_username']); $answer = shell_exec("ssh -p " . $port . " " . $user . "@" . $host);
Is escapeshellcmd() достаточно или мне нужно что-то более сложное? Или, может быть, я должен использовать escapeshellarg() в этом примере?
Спасибо.
Я бы сказал, что это то, для чего escapeshellarg функция escapeshellarg поэтому, чтобы избежать параметров, это тот, который вы должны использовать.
В основном :
escapeshellarg escapeshellcmd . Цитируя их соответствующие документы:
escapeshellcmd ():
Эта функция должна использоваться, чтобы гарантировать, что любые данные, поступающие с пользовательского ввода, будут экранированы до того, как эти данные будут переданы функциям exec() или system() или оператору backtick.
escapeshellarg ():
Эта функция должна использоваться для исключения отдельных аргументов для функций оболочки, поступающих с пользовательского ввода.