
popen 함수는 시스템 명령어를 실행하는 데 사용되는 함수입니다. shell=True와 shell=False의 차이점은 다음과 같습니다.
- shell=True: 시스템 명령어를 실행할 때, shell을 사용하여 명령어를 실행합니다. 이 경우, 명령어를 직접 입력할 필요가 없으며, 보다 편리하게 시스템 명령어를 실행할 수 있습니다. 그러나, 보안상 위험이 있습니다. 예를 들어, 명령어에 특수 문자를 포함할 경우, shell을 통해 시스템 명령어를 실행할 때, 보안 취약점이 발생할 수 있습니다.
- shell=False: 시스템 명령어를 직접 입력해야 합니다. 이 경우, 명령어를 직접 입력할 필요가 있지만, 보안 취약점이 감소합니다. 예를 들어, 명령어에 특수 문자를 포함할 경우, 보안 취약점이 발생할 수 없습니다.
shell=True를 사용할 때의 위험은 다음과 같습니다.
- 명령어에 특수 문자를 포함할 경우, 보안 취약점이 발생할 수 있습니다.
- 명령어에 shell 명령어를 포함할 경우, 보안 취약점이 발생할 수 있습니다.
- 명령어에 환경 변수를 포함할 경우, 보안 취약점이 발생할 수 있습니다.
shell=False를 사용할 때는 명령어를 직접 입력해야 합니다. 예를 들어, 시스템 명령어를 실행할 때, 다음과 같이 명령어를 직접 입력할 수 있습니다.
#hostingforum.kr
python
import subprocess
subprocess.run(['ls', '-l'])
위의 예제에서는, ls -l 명령어를 직접 입력하여 시스템 명령어를 실행합니다. 이 경우, 보안 취약점이 감소합니다.
2025-07-04 10:32