使用escapeshellarg()时,exec()的这种用法是否安全?

时间:2014-08-15 02:15:16

标签: php security exec

我有这段代码:

$path = "/somedirectory/$user";
echo exec('du -s '.escapeshellarg($path));

此代码用于检查用户在其目录中使用的空间大小。 $ user值可以是任何字母数字值和" .-"

使用它是否安全?

3 个答案:

答案 0 :(得分:2)

escapeshellarg确保将值解释为单个普通shell参数,而无需进一步的shell扩展(例如,没有​`…`​$(…)${…}等。) 。这意味着$path中的任何值都会作为单个参数传递给du

但是,如前所述,它不会阻止传递可执行文件解释时可能是恶意的参数。

答案 1 :(得分:1)

这是安全的,因为它不会运行任意命令,但根据$user的设置方式,..可以潜入那里,这会让任何看着这个的人查看/目录的大小,这可能与您有关,也可能不是。

答案 2 :(得分:0)

安全,如果只有你的exec不依赖任何与$ user相关的命令。

例如,$ user。 “/ du -s”绝对不安全。