신뢰할 수 없는 문자열을 사용하는 Python의 eval()의 보안 영향
eval()을 사용하여 신뢰할 수 없는 Python 문자열을 평가할 때 여러 보안 위험이 발생합니다.
1. eval(string, {"f": Foo()}, {})
이것은 안전하지 않습니다. Foo 인스턴스를 통해 "os" 및 "sys"와 같은 내장 기능에 액세스할 수 있으며 잠재적으로 시스템을 손상시킬 수 있습니다.
2. eval(string, {}, {})
이 역시 안전하지 않습니다. 사전을 명시적으로 전달하지 않고도 "len" 및 "list"와 같은 내장 기능을 사용하여 안전하지 않은 다른 API에 접근할 수 있습니다.
3. 내장 기능 허용 안 함
eval() 컨텍스트에서 내장 기능의 존재를 완전히 방지할 수 있는 간단한 방법은 없습니다. Python 인터프리터에 대한 패치가 필요할 수 있습니다.
추가 위험:
"[0] * 100000000"과 같은 악성 문자열은 리소스 고갈을 초래할 수 있습니다. 임의의 표현식을 실행하면 사용자 데이터 및 시스템 보안이 손상될 수 있습니다.
대체 접근 방식:
eval()을 사용하는 대신 신뢰할 수 없는 데이터를 처리하기 위한 다른 방법을 고려하세요. 예:
위 내용은 신뢰할 수 없는 문자열과 함께 Python의 `eval()`을 사용하는 것이 얼마나 안전합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!