CentOS 6 — отправка пользовательской команды из PHP

CentOS 6 — отправка пользовательской команды из PHP

У меня есть веб-панель управления, и мне нужно разрешить пользователям отправлять команды своим приложениям.

У меня похожая проблема с SQL-инъекцией.

$user_input='good command';
shell_exec('tmux send-keys session1:0 "'.$user_input.'" C-m');

Это отправит команду tmux send-keys session1:0 "good command" C-m, что нормально.

Но пользователь может ввести и что-то другое.

$user_input='good command" C-m | rm / | tmux send-keys sessionUserMayNotDoAnyThingIn:0 "some command';
shell_exec('tmux send-keys session1:0 "'.$user_input.'" C-m');

Это пошлет командуtmux send-keys session1:0 "good command" C-m | rm / | tmux send-keys sessionUseerMayNotDoAnyThingIn:0 "some command" C-m

(Это отправит 3 команды)

tmux send-keys session1:0 "good command" C-m
rm /
tmux send-keys sessionUseerMayNotDoAnyThingIn:0 "some command" C-m

Так каково же решение этой проблемы?

решение1

Можно использовать escapeshellcmd()для экранирования команд (первый токен) и escapeshellarg()для экранирования аргументов.

Связанный контент