3

我无法确定我是否在这里过于偏执,但是如果我从命令行运行 PHP 脚本并且该脚本回显了用户定义的内容,我是否需要转义它?

例如,这会不会有潜在的危险,或者文本是否会直接作为纯文本回显?

$test = 'shutdown -h now';
echo $test;

如果我确实需要转义,是我想要的 escapeshellarg() 函数吗?

4

3 回答 3

3

shell 解释来自标准输入的命令,但您正在写入标准输出。所以一切都很好

但是,为了防止您意外将它们复制粘贴到终端中,逃避它们绝不是一个坏主意

于 2013-09-15T11:08:09.570 回答
3

我不完全同意其他答案。

写入标准输出是正确的,因此输入不会被解释为命令,但是一些特殊的控制序列可以调用一些与 shell 相关的行为。例如,请参见此处。

这些不能调用其他程序或命令,但它们会惹恼用户(他必须键入reset以重置 shell)。

于 2013-09-15T11:19:48.327 回答
0

它不应该是危险的。用户不能以这种方式调用任何命令。当然,如果您之间没有使用exec()或类似的功能。请注意,从命令行向 phpcli 传递任何参数都是危险的。因为这个参数可能包含“`”,所以在shell中执行命令以获得结果。

于 2013-09-15T11:10:55.780 回答