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()参数转义。

相关内容