os.system() 호출에서 문자를 안전하게 이스케이프 처리하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-28 20:39:02
원래의
485명이 탐색했습니다.

How to Safely Escape Characters for os.system() Calls?

os.system() 호출의 이스케이프 문자

os.system()을 활용할 때 파일 이름과 인수의 적절한 이스케이프를 보장하는 것이 중요합니다. . 다음은 이 문제를 해결하고 여러 운영 체제 및 셸(주로 bash)에 대한 지원을 제공하는 솔루션입니다.

따옴표 사용

가장 간단하고 안전한 접근 방식은 명령을 묶는 것입니다. 및 큰따옴표 또는 작은따옴표 안의 인수:

os.system("my_command 'argument with spaces'")
로그인 후 복사

shlex 또는 파이프를 사용하여 이스케이프

따옴표가 적합하지 않은 경우 shlex 또는 파이프 모듈을 사용할 수 있습니다. 문자를 이스케이프하려면:

  • shlex.quote(string): 이 함수는 문자열의 특수 문자를 이스케이프하여 bash에 안전하게 전달할 수 있도록 합니다.
  • pipes.quote(string): 유사 shlex.quote()에 적용할 수 있지만 이전 버전의 Python에서는 가능합니다(Python 2와 3 모두 지원).

사용 예

다음을 실행한다고 가정해 보겠습니다. os.system()을 사용하여 "cat input.txt | grep 'find Something' | sort >output.txt" 명령. shlex.quote()를 사용하면 코드는 다음과 같습니다.

import shlex

cmd = "cat {} | grep '{}' | sort > {}".format(
    shlex.quote("input.txt"),
    shlex.quote("find something"),
    shlex.quote("output.txt"),
)
os.system(cmd)
로그인 후 복사

보안 참고 사항

os.system()은 빠르고 직접적인 실행 방법을 제공합니다. 시스템 명령을 사용하려면 잠재적인 보안 취약성을 고려하는 것이 중요합니다. os.system()을 사용하기 전에 사용자가 생성했거나 신뢰할 수 없는 입력이 제대로 검증되고 삭제되었는지 확인하세요.

위 내용은 os.system() 호출에서 문자를 안전하게 이스케이프 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿