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()參數轉義。

相關內容