Python의 eval()과 ast.literal_eval() 사용
쿼리: 사용자 제공 데이터를 평가할 때 , eval() 또는 ast.literal_eval()을 사용하여 일치하는지 확인하는 것이 더 안전합니까? 원하는 데이터 유형?
해결책:
사용자 제공 데이터로 작업할 때 보안 위험을 고려하는 것이 중요합니다. eval()을 사용하면 모든 문자열 입력을 Python 코드로 평가하여 잠재적으로 예상치 못한 작업이나 악의적인 작업이 발생할 수 있으므로 위험할 수 있습니다.
설명된 시나리오에서 datamap = eval(input('여기에 일부 데이터를 제공하세요: ') )은 함수가 호출되자마자 입력을 평가하여 실행 전에 해당 유형을 검증할 기회를 남기지 않기 때문에 특히 위험합니다.
더 안전한 대안은 다음과 같습니다. 평가 전에 유효한 Python 데이터 유형(예: 사전)을 확인하는 ast.literal_eval(). 입력이 유효한 유형이 아닌 경우 예외를 발생시켜 잠재적으로 유해한 코드가 실행되는 것을 방지합니다.
따라서 사용자 입력에서 리터럴 Python 데이터 유형을 평가할 때 eval보다 ast.literal_eval()을 사용하는 것이 좋습니다. () 데이터의 안전성을 확보하고 보안취약점을 예방하기 위해
위 내용은 `eval()` 대 `ast.literal_eval()`: 사용자 입력을 평가하는 데 더 안전한 것은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!