시스템 프로그램 실행 escapeshellcmd

(PHP 4, PHP 5, PHP 7, PHP 8)

escapeshellcmd — 이스케이프 쉘 메타 문자


설명

escapeshellcmd(string $command): string

escapeshellcmd()는 임의의 명령을 실행하도록 쉘 명령을 속이는 데 사용할 수 있는 문자열의 모든 문자를 이스케이프합니다. 이 함수는 이 데이터가 exec() 또는 system() 함수 또는 백틱 연산자로 전달되기 전에 사용자 입력에서 오는 모든 데이터가 이스케이프되었는지 확인하는 데 사용해야 합니다.

다음 문자 앞에는 백슬래시가 붙습니다. &#;`|*?~<>^()[]{}$\, \x0A 및 \xFF. ' 및 "는 쌍을 이루지 않은 경우에만 이스케이프됩니다. Windows에서 이러한 모든 문자와 % 및 ! 앞에는 캐럿(^)이 붙습니다.


매개변수

command
이스케이프할 명령입니다.

반환 값

이스케이프된 문자열입니다.


Examples

예제 #1 escapeshellcmd() 예제

                  
<?php
// We allow arbitrary number of arguments intentionally here.
$command = './configure '.$_POST['configure_options'];

$escaped_command = escapeshellcmd($command);

system($escaped_command);
?>
                  
                

경고 escapeshellcmd()는 전체 명령 문자열에 사용해야 하며 여전히 공격자가 임의의 수의 인수를 전달할 수 있습니다. 단일 인수를 이스케이프하려면 escapeshellarg()를 대신 사용해야 합니다.

경고 C:\Program Files\ProgramName\program.exe와 같은 경로가 있는 Windows에서 문제가 될 수 있는 escapeshellcmd()에 의해 공백이 이스케이프되지 않습니다. 다음 코드 조각을 사용하여 완화할 수 있습니다.

                    
<?php
$cmd = preg_replace('`(?<!^) `', '^ ', escapeshellcmd($cmd));
                    
                  

기타