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()인수 이스케이프에 사용할 수 있습니다 .

관련 정보