我有这段代码:
$path = "/somedirectory/$user";
echo exec('du -s '.escapeshellarg($path));
此代码用于检查用户在其目录中使用的空间大小。 $ user值可以是任何字母数字值和" .-"
使用它是否安全?
答案 0 :(得分:2)
escapeshellarg
确保将值解释为单个普通shell参数,而无需进一步的shell扩展(例如,没有`…`
,$(…)
,${…}
等。) 。这意味着$path
中的任何值都会作为单个参数传递给du
。
但是,如前所述,它不会阻止传递可执行文件解释时可能是恶意的参数。
答案 1 :(得分:1)
这是安全的,因为它不会运行任意命令,但根据$user
的设置方式,..
可以潜入那里,这会让任何看着这个的人查看/
目录的大小,这可能与您有关,也可能不是。
答案 2 :(得分:0)
安全,如果只有你的exec不依赖任何与$ user相关的命令。
例如,$ user。 “/ du -s”绝对不安全。