Shell Exec | Security | PHP
- Shell Exec | Security | PHP
📘 shell_exec no PHP
Descrição
A função shell_exec() envia um comando para o shell do sistema operacional e retorna a saída completa desse comando como uma string.
Sintaxe
string shell_exec(string $command)
-
$command → O comando que será executado no shell.
-
Retorno:
- Retorna uma string contendo toda a saída do comando.
- Retorna
NULLse a execução falhar ou se o comando não produzir saída.
Exemplo básico
<?php
$output = shell_exec("ls -l");
echo "<pre>$output</pre>";
- No Linux/macOS: lista os arquivos do diretório.
- No Windows: você poderia usar
"dir"em vez de"ls -l".
Diferença para outras funções
exec()→ Executa comando, retorna a última linha da saída. (pode preencher um array com todas).system()→ Executa comando e imprime diretamente a saída.passthru()→ Executa comando e envia a saída bruta (útil p/ binários).shell_exec()→ Captura toda a saída como string.
Considerações de segurança
-
Muito perigoso se usado com entradas do usuário sem sanitização, pois pode abrir brecha para Command Injection.
-
Recomendado usar escapeshellcmd() e escapeshellarg() ao lidar com valores externos:
$file = escapeshellarg($userInput);
$output = shell_exec("cat $file");
Disponibilidade
-
Disponível em todas as versões modernas do PHP (desde o PHP 4).
-
Pode estar desabilitada no
php.iniviadisable_functions.disable_functions = exec, system, shell_exec, passthru