CentOS 6 - PHP からユーザー定義コマンドを送信する

CentOS 6 - PHP からユーザー定義コマンドを送信する

Web コントロール パネルがあり、ユーザーがアプリケーションにコマンドを送信できるようにする必要があります。

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()引数のエスケープに使用できます。

関連情報