라이브러리

[PHP] escapeshellcmd - 쉘 메타문자 이스케이프




escapeshellcmd란?


PHP의 `escapeshellcmd` 함수는 입력된 문자열에서 쉘 명령어를 인식하는 특수 문자를 제거하여, 쉘 명령어를 실행할 때 발생할 수 있는 보안 위협을 방지합니다.

쉘 명령어는 `shell_exec`, `exec`, `system`, `passthru`, `popen`, `proc_open` 함수와 같은 PHP 함수를 통해 실행할 수 있습니다. 이러한 함수들은 사용자 입력을 쉘 명령어로 변환하여 실행할 수 있으므로, 보안 위협을 피하기 위해 `escapeshellcmd` 함수를 사용해야 합니다.

escapeshellcmd의 동작


`escapeshellcmd` 함수는 입력된 문자열에서 다음 특수 문자를 제거합니다.

- `;` (세미콜론) : 쉘 명령어를 여러 개 실행할 때 사용하는 문자입니다.
- `&` (앰퍼샌드) : 백그라운드에서 쉘 명령어를 실행할 때 사용하는 문자입니다.
- `|` (파이프) : 쉘 명령어를 연결하여 실행할 때 사용하는 문자입니다.
- `>` (대시) : 쉘 명령어의 출력을 파일에 저장할 때 사용하는 문자입니다.
- `<` (레프트 앰퍼샌드) : 쉘 명령어의 입력을 파일에서 읽을 때 사용하는 문자입니다.
- `(` (왼쪽 괄호) : 쉘 명령어의 명령어를 실행할 때 사용하는 문자입니다.
- `)` (오른쪽 괄호) : 쉘 명령어의 명령어를 종료할 때 사용하는 문자입니다.
- `"` (큰따옴표) : 쉘 명령어의 문자열을 묶을 때 사용하는 문자입니다.
- `'` (작은따옴표) : 쉘 명령어의 문자열을 묶을 때 사용하는 문자입니다.

예제


#hostingforum.kr
php

// 사용자 입력을 받습니다.

$user_input = $_POST['input'];



// 사용자 입력을 쉘 명령어로 변환합니다.

$shell_command = escapeshellcmd($user_input);



// 쉘 명령어를 실행합니다.

$output = shell_exec($shell_command);



// 실행 결과를 출력합니다.

echo $output;



참고


- `escapeshellcmd` 함수는 입력된 문자열에서 쉘 명령어를 인식하는 특수 문자를 제거합니다. 하지만, 이 함수는 모든 보안 위협을 방지하지는 않습니다. 사용자 입력을 직접 쉘 명령어로 변환하는 경우, 보안 위협을 피하기 위해 `escapeshellarg` 함수를 사용해야 합니다.
- `escapeshellarg` 함수는 입력된 문자열을 쉘 명령어로 변환하여, 보안 위협을 방지합니다. 이 함수는 `escapeshellcmd` 함수와 달리, 입력된 문자열을 쉘 명령어로 변환하여, 보안 위협을 방지합니다.

#hostingforum.kr
php

// 사용자 입력을 받습니다.

$user_input = $_POST['input'];



// 사용자 입력을 쉘 명령어로 변환합니다.

$shell_command = escapeshellarg($user_input);



// 쉘 명령어를 실행합니다.

$output = shell_exec($shell_command);



// 실행 결과를 출력합니다.

echo $output;


  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 585 페이지

검색

게시물 검색