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

У меня проблема похожая на 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 ответ1

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .