У мене є веб-панель управління, і мені потрібно, щоб мої користувачі могли надсилати команди для їх застосування.
У мене схожа проблема з ін'єкцією 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
То яке рішення для цього?
Жодному користувальницькому вкладу не можна довіряти.
—
Еван Дарвін
@EvanDarwin Чи стане можливо щось подібне \ n перед ""
—
користувачем3524823
Звичайно, у такому випадку це стає нескінченною грою на додавання регулярних виразів та замін. Однак я хотів би вам перевірити docker.io, який не працює в tmux сесіях, але вони отримують власну "VM" з низькою пам'яттю.
—
Еван Дарвін
Докер @EvanDarwin не відповідав би моїм потребам :( Але чи було б це безпечно, якби мені це сподобалось
—
user3524823
shell_exec('tmux send-keys session1:0 \n"'.$user_input.'\n" C-m');