escapeshellcmd

(PHP 4, PHP 5, PHP 7, PHP 8)

escapeshellcmdEscapa meta-caracteres shell

Descrição

escapeshellcmd(string $command): string

escapeshellcmd() escapa qualquer caractere em uma string que possa ser utilizada para enganar um comando shell para executar comandos arbritários. Esta função deve ser utilizada para ter certeza que quaisquer dados vindos do usuário são escapado antes que estes dados sejam passados para as funções exec() ou system(), ou para o operador crase.

Os seguintes caracteres são precedidos por uma barra invertida: &#;`|*?~<>^()[]{}$\, \x0A e \xFF. ' e " são escapados apenas se não estiverem em pares. No windows, todos estes caracteres mais % e ! são precedidos por um circunflexo (^).

Parâmetros

command

O comando que será escapado.

Valor Retornado

A string escapada.

Exemplos

Example #1 Exemplo de escapeshellcmd()

<?php
// Permitindo número arbitrário de argumentos intencionalmente.
$command = './configure '.$_POST['configure_options'];

$escaped_command = escapeshellcmd($command);

system($escaped_command);
?>

Notas

Warning

escapeshellcmd() deve ser usada na string de comando inteira, e ainda assim permite ao intruso passar um número arbitrário de argumentos. Para escapar um único argumento, a função escapeshellarg() deve ser usada em seu lugar.

Warning

Espaços não serão escapados por escapeshellcmd(), o que pode ser problemático em caminhos do Windows como: C:\Program Files\ProgramName\program.exe. Isto pode ser mitigado usando-se o seguinte trecho de código:

<?php
$cmd = preg_replace('`(?<!^) `', '^ ', escapeshellcmd($cmd));

Veja Também