«

PHP:escapeshellcmd()的用法

时间:2024-3-1 21:52     作者:韩俊     分类: Linux


escapeshellcmd

(PHP 4, PHP 5)

escapeshellcmd — shell 元字符转义

说明

string escapeshellcmd
( string $command
)

escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。

反斜线()会在以下字符之前插入: #&;`|*?~<>^()[]{}$, x0A 和 xFF。 ' 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上,所有这些字符以及 % 都会被空格代替。(译注:实际测试发现在 Windows 平台是前缀 ^ 来转义的。)

参数

command

要转义的命令。

返回值

转义后的字符串。

范例

Example #1 escapeshellcmd() example

<?php
// 我们故意允许任意数量的参数
$command = './configure '.$_POST['configure_options'];

$escaped_command = escapeshellcmd($command);
 
system($escaped_command);
?>

Warning

escapeshellcmd() 应被用在完整的命令字符串上。 即使如此,攻击者还是可以传入任意数量的参数。 请使用 escapeshellarg() 函数 对单个参数进行转义。

参见

escapeshellarg() - 把字符串转码为可以在 shell 命令里使用的参数 exec() - 执行一个外部程序 popen() - 打开进程文件指针 system() - 执行外部程序,并且显示输出 执行运算符

标签: linux

热门推荐