사용자에게 도메인 이름을 입력하라는 html 형식이 있습니다.이 형식은 아래의 php7.0 페이지에 게시되어 셸 스크립트에 의해 처리됩니다. 그러면 html 페이지에 쓰기 위해 aha를 통해 결과가 전달됩니다.php7에서 shell_exec을 사용할 때 어떻게 명령 주입을 멈출 수 있습니까?
내가 가진 문제는 그 같은 명령을 주입하지 못하도록 할 수있는 방법입니다 :
domain.com | rm * -rf
나는 safe_mode를 사용하고 명령을 실행할 수있는 디렉토리를 제한 할 수 있다고 생각했지만이 기능은 현재 사용되지 않습니다.
$domain_arg = escapeshellarg($_POST['domain']);
$today = date("Y-m-d-H:i:s");
$cmd = "/home/ubuntu/dtest/dtest.sh $domain_arg | aha -b -t 'Domain test of $domain_arg' > /var/www/website/results/$domain_arg.$today.html";
$output = shell_exec($cmd);
header("Location: http://the.web.com/results/$result.$today.html");
사용자 입력을'exec' 명령에 주입하는 것은 매우 위험합니다. 이 작업을 수행하기 전에 정말 좋은 검증 방법을 사용하는 것이 좋습니다. 입력이 유효한 도메인 이름인지 확인하는 유효성 검사기를 작성할 수 있습니다. – Pitchinnate
'escapeshellarg '을 사용하면 할 일은 모두 끝났습니다. – miken32
파일 이름 구성 요소로 다른 것을 사용해야합니다. – miken32