2011-01-17 2 views
19

ast.literal_eval(node_or_string)의 평가가 실제로 안전하지 않은 것으로 알려진 방법이 있습니까?Python 3, ast.literal_eval (node_or_string)에 알려진 보안 구멍이 있습니까?

예인 경우 해당 패치를 사용할 수 있습니까?

(이미 아마도 더 안전 PyPy [샌드 박스]에 대해 알고 있지만 답변은 다음 예를하지 않는 한 아니, 내 요구는 내가 그렇게 멀리 갈하지 않을만큼 작은 수 있습니다.)

+0

아니요,하지만 그것을 증명할 수있는 CBA입니다. –

답변

41

documentation은 안전하고, bug tracker에 literal_eval의 보안 관련 버그가 없으므로 안전하다고 생각할 수 있습니다.

또한 according to the source, literal_eval은 문자열을 파이썬 AST (소스 트리)로 구문 분석하고 리터럴 인 경우에만 반환합니다. 코드는 실행되지 않고 구문 분석되므로 보안 위험이 발생할 이유가 없습니다.

+4

+1 더 많은 답변이없는 이유는 더 이상 말할 필요가 없다는 것입니다. –

+1

글쎄, 항상 위험이 없다는 것을 증명하는 것은 어렵지만 코드가 실제로 실행되지 않는다는 사실은 위험이별로 없다는 것을 확신하는 데 도움이 될 것입니다. – madjar

+2

위험은 Python 자체를 사용하는 것과 거의 같습니다. –

관련 문제