CentOS 6 - Enviar comando definido pelo usuário do PHP

0

Eu tenho um painel de controle da web e preciso que meus usuários permitam que enviem comandos para o aplicativo deles.

Eu sou um problema semelhante à injeção de SQL.

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

Isso enviaria o comando tmux send-keys session1:0 "good command" C-m , o que é bom.

Mas o usuário também pode digitar outro.

$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');

Isso enviaria o comando tmux send-keys session1:0 "good command" C-m | rm / | tmux send-keys sessionUseerMayNotDoAnyThingIn:0 "some command" C-m

(Isso enviaria 3 comandos)

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

Então, qual é a solução para isso?

    
por user3524823 19.07.2014 / 18:40

1 resposta

0

Você pode usar escapeshellcmd() para o escape de comando (primeiro token) e escapeshellarg() para argumentos que escapam.

    
por 19.07.2014 / 21:46