> 백엔드 개발 > 파이썬 튜토리얼 > `eval()` 대 `ast.literal_eval()`: 사용자 입력을 평가하는 데 더 안전한 것은 무엇입니까?

`eval()` 대 `ast.literal_eval()`: 사용자 입력을 평가하는 데 더 안전한 것은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-19 03:01:28
원래의
758명이 탐색했습니다.

`eval()` vs. `ast.literal_eval()`: Which is Safer for Evaluating User Input?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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