(PHP 4, PHP 5, PHP 7)
escapeshellcmd — Экранирует метасимволы командной строки
$command
)Команда 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.6.0 |
Значение по умолчанию для параметра encoding было изменено
на значение конфигурационной опции default_charset.
|
5.4.43, 5.5.27, 5.6.11 | Восклицательные знаки заменяются пробелами. |