PHP嵌套的escapeshellarg()

时间:2016-07-22 23:17:00

标签: php shell escaping exec

我正在使用PHP生成一个shell命令,然后我将其传递给PHP的exec()函数。我正在广泛使用escapeshellarg()来确保没有任何安全问题,并确保某些Linux shell属性和运算符正在应用于正确的位置(如流重定向)。

所以这是我的问题的一般例子:

我正在嵌套escapeshellarg()三次,如下:

echo "first_program -f " . escapeshellarg("second_program -f ". escapeshellarg("third_program -f " . escapeshellarg("value")));

这个输出是:

first_program -f 'second_program -f '\''third_program -f '\''\'\'''\''value'\''\'\'''\'''\'''

正如您所看到的,一旦它进入第三个escapeshellarg()函数调用,它就会因转义字符而变得疯狂。

exec()函数执行此操作时,它没有正确地取消,因此无法正确执行。

我错过了什么吗?或者escapeshellarg()函数是否会像这样嵌套?它只能嵌套两次,但是在第三次嵌套时它会发疯。我应该在某些地方使用escapeshellcmd()吗?我将所有这些作为参数传递给我,所以我不明白为什么我不会使用escapeshellarg()

0 个答案:

没有答案