我无法确定我是否在这里过于偏执,但是如果我从命令行运行 PHP 脚本并且该脚本回显了用户定义的内容,我是否需要转义它?
例如,这会不会有潜在的危险,或者文本是否会直接作为纯文本回显?
$test = 'shutdown -h now';
echo $test;
如果我确实需要转义,是我想要的 escapeshellarg() 函数吗?
shell 解释来自标准输入的命令,但您正在写入标准输出。所以一切都很好
但是,为了防止您意外将它们复制粘贴到终端中,逃避它们绝不是一个坏主意
我不完全同意其他答案。
写入标准输出是正确的,因此输入不会被解释为命令,但是一些特殊的控制序列可以调用一些与 shell 相关的行为。例如,请参见此处。
这些不能调用其他程序或命令,但它们会惹恼用户(他必须键入reset
以重置 shell)。
它不应该是危险的。用户不能以这种方式调用任何命令。当然,如果您之间没有使用exec()
或类似的功能。请注意,从命令行向 phpcli 传递任何参数都是危险的。因为这个参数可能包含“`”,所以在shell中执行命令以获得结果。