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