takuya / php-shell
更安全的 shell_exec
1.0.1
2020-04-16 13:57 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-17 00:53:14 UTC
README
$name = "takuya"; $ret = PHPShell::exec_command('echo $name', ['name'=>$name]);
显然,在 'echo $name' 中的 $name
看起来像 PHP 变量,但 $name
实际上是作为传递的 shell 环境变量。
与 escapeshellarg 比较
Quart 对调试不友好。
$name = "takuy'a;curl -h "; $name = escapeshellarg($name); // -> "'takuy'\''a;curl -h '"
长字符串参数会使代码更难以阅读..
$url = escapeshellarg("too long argument ..afasdfasdfasdfasdfawefadf"); $json = escapeshellarg(json_encode($object)) $cmd = 'curl -v -L $url -X POST --data $json'; var_dump($cmd);
使用环境变量更为简单。并且使代码更清晰,了解我们将要做什么。
$env_vars = ['url'=>$url, 'json'=>$json]; foreach( $env_vars as $k=>$v ){ putenv("$k=$v"); } $ret = shell_exec('curl -v -L $url -X POST --data $json');
因此,这个库支持您以环境变量而不是原始字符串的形式传递参数。
功能
更安全地调用 Shell 命令。为了避免转义 Shell 参数,这个库使用 ENV。通过使用环境变量而不是转义,shell 命令调用变得更安全、更简单,可以避免 shell 命令注入。
自
- 首次发布于 2008 年。