escapeshellcmd

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

escapeshellcmdProtege los caracteres especiales del Shell

Descripción

escapeshellcmd(string $command): string

escapeshellcmd() escapa todos los caracteres de la cadena command que podrían tener un significado especial en una orden Shell. Esta función permite asegurarse de que la orden será correctamente pasada al ejecutor de órdenes Shell exec() y system(), o incluso a comillas invertidas.

Los siguientes caracteres serán escapados: &#;`|*?~<>^()[]{}$\, \x0A y \xFF. ' y " son escapados solo si no están en pares. En Windows, todos estos caracteres así como % y ! son precedidos por un circunflejo (^).

Parámetros

command

La orden a escapar.

Valores devueltos

La cadena escapada.

Ejemplos

Ejemplo #1 Ejemplo con escapeshellcmd()

<?php
// Se permiten intencionalmente un número arbitrario de argumentos aquí.
$command = './configure '.$_POST['configure_options'];

$escaped_command = escapeshellcmd($command);

system($escaped_command);
?>

Notas

Advertencia

La función escapeshellcmd() debe ser utilizada sobre toda la cadena de orden, y permite a personas malintencionadas pasar un número arbitrario de argumentos. Para escapar un solo argumento, la función escapeshellarg() debería ser utilizada en su lugar.

Advertencia

Los espacios no son escapados por escapeshellcmd() lo cual puede ser problemático en Windows con rutas como: C:\Program Files\ProgramName\program.exe. Esto puede ser mitigado utilizando el siguiente fragmento de código:

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

Ver también