安全使用exec与PHP

时间:2015-03-16 08:29:03

标签: php exec shell-exec

如何在php中使用安全exec

我尝试用这样的exec命令:

exec("ejabberdctl register ". $_POST['username'] ." ". $_POST['password'])

在这个命令中,如果任何一个人在密码中使用了这样的东西

& free -m
&& free -m
;free -m

123456 & rm -rf /root
123456 ; rm -rf /root

.....等

我怎么能阻止&和;如果密码 - > (&&&&&&&&&& .....)或 - > (;;;;;;;)

关于安全使用exec的任何想法?

1 个答案:

答案 0 :(得分:3)

使用escapeshellarg()。它确保将值解释为单个普通shell参数。因此,即使您将命令作为参数传递,它也不会被执行。

$arg = $_POST['username'] ." ". $_POST['password'];
exec("ejabberdctl register ".escapeshellarg($arg));