2015-03-16 4 views
1

Как я могу использовать безопасное Exec с PHPБезопасное использование Exec с PHP

Я пытаюсь сделать команду с Exec так:

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

В этой команде, если какой-либо один использовать в пароле некоторые вещи как этот

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

или

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

..... и т. Д.

как я могу блокировать & и; Кроме того, если пароль -> (& & & & & & & & & & .....) или -> (;;;;;;;)

Любая идея о безопасном использовании Exec?

ответ

2

Использование escapeshellarg(). Это гарантирует, что значение интерпретируется как один простой аргумент оболочки. Таким образом, он не будет выполнен, даже если вы передадите команду в качестве аргумента.

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

А что, если пароль, как это: & свободный -m – deounix

+0

&& не будет работать, если вы используете escapeshellarg(). Так что проблем нет. – Harikrishnan

+1

Спасибо, работаю как шарм. – deounix

Смежные вопросы