2011-01-17 31 views
19

Có bất kỳ cách nào được biết để đánh giá của ast.literal_eval(node_or_string) không thực sự an toàn không?Python 3, Có lỗ hổng bảo mật đã biết nào trong ast.literal_eval (node_or_string) không?

Nếu có, các bản vá có sẵn cho chúng không?

(Tôi đã biết về PyPy [sandbox], đó là lẽ an toàn hơn, nhưng trừ khi các câu trả lời là có thì không có, nhu cầu của tôi là đủ nhỏ mà tôi sẽ không đi quá xa.)

+0

Không, nhưng tôi CBA chứng minh điều đó. –

Trả lời

41

Các documentation nói rằng nó an toàn và không có lỗi liên quan đến bảo mật của literal_eval trong bug tracker, vì vậy bạn có thể cho rằng nó an toàn.

Ngoài ra, according to the source, literal_eval phân tích cú pháp chuỗi thành python AST (cây nguồn) và chỉ trả về nếu nó là chữ. Mã này không bao giờ được thực hiện, chỉ được phân tích cú pháp, vì vậy không có lý do gì để trở thành một nguy cơ bảo mật.

+4

+1 Lý do không có thêm câu trả lời ở đây là không có gì cần phải nói thêm. –

+1

Vâng, nó luôn luôn khó khăn để chứng minh rằng không có rủi ro, nhưng thực tế mã không bao giờ thực sự thực hiện nên giúp thuyết phục rằng không có nhiều rủi ro. – madjar

+2

Nguy cơ giống như sử dụng Python. –

Các vấn đề liên quan