如何在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的任何想法?
答案 0 :(得分:3)
使用escapeshellarg()
。它确保将值解释为单个普通shell参数。因此,即使您将命令作为参数传递,它也不会被执行。
$arg = $_POST['username'] ." ". $_POST['password'];
exec("ejabberdctl register ".escapeshellarg($arg));