라이브러리
[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;
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.