使用 php 安全使用 exec

Safe use exec with php

如何使用 php

的安全执行程序

我正在尝试像这样使用 exec 执行命令:

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

在此命令中,如果有人在密码中使用类似这样的东西

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

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

.....等等

我怎样才能阻止 & 和 ;还有如果密码 --> (&&&&&&&&&......) 或 --> (;;;;;;;)

关于安全使用 exec 有什么想法吗?

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

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