escapeshellcmd

(PHP 4, PHP 5, PHP 7)

escapeshellcmdЭкранировать метасимволы командной строки

Описание

escapeshellcmd ( string $command ) : string

Команда escapeshellcmd() экранирует любые символы в строке, которые могут быть использованы для обмана команды оболочки при выполнении произвольных команд. Эта функция должна быть использована, чтобы убедиться, что любые данные, вводимые пользователем, будут экранированы перед передачей их функциям exec() или system() или оператору "обратный апостроф".

Следующие символы будут экранированы при помощи обратного слеша: &#;`|*?~<>^()[]{}$\, \x0A и \xFF. Символы ' и " экранируются только в том случае, если они встречаются не попарно. В Windows все эти символы, плюс ! и % заменяются пробелом.

Список параметров

command

Команда, которая будет экранирована.

Возвращаемые значения

Экранированная строка.

Примеры

Пример #1 Пример использования escapeshellcmd()

<?php
// Мы намеренно допускаем здесь произвольное количество аргументов.
$command './configure '.$_POST['configure_options'];

$escaped_command escapeshellcmd($command);
 
system($escaped_command);
?>

Внимание

Функцию escapeshellcmd() следует использовать над всей командной строкой, но она все еще позволяет атакующему передать произвольное количество аргументов. Для экранирования одного аргумента вместо нее необходимо использовать функцию escapeshellarg().

Список изменений

Версия Описание
5.4.43, 5.5.27, 5.6.11 Восклицательные знаки заменяются пробелами.

Смотрите также

  • escapeshellarg() - Экранировать строку для того, чтобы она могла быть использована как аргумент командной строки
  • exec() - Выполнить внешнюю программу
  • popen() - Открывает файловый указатель процесса
  • system() - Выполнить внешнюю программу и отобразить вывод
  • Оператор исполнения