2011-07-22 30 views
9

Gần đây, tôi đã gặp phải các vấn đề về bảo mật của phần mềm Python và cPickle. Rõ ràng, không có biện pháp an ninh thực tế được thực hiện trong dưa chuột trừ khi bạn ghi đè lên phương pháp find_class dưới dạng sửa đổi cơ bản để bảo mật hơn một chút. Nhưng tôi thường thấy nghe rằng JSON an toàn hơn.Bảo mật JSON so với Pickle

Mọi người có thể giải thích một chút về vấn đề này không? 'Tại sao JSON an toàn hơn so với dưa chua?

Cảm ơn rất nhiều! Đánh dấu

+3

Bạn có ý nghĩa gì khi "gặp phải"? Bạn đọc một cái gì đó nói rằng họ không an toàn? Bạn đã triển khai một cái gì đó đã bị tấn công? Hay cái gì? –

Trả lời

12

json an toàn hơn vì về cơ bản bị hạn chế hơn. Loại trăn duy nhất có thể mã hóa là unicode, int, float, NoneType, bool, listdict. đây là những marshaled/unmarshalled trong một thời trang tầm thường về cơ bản mà không phải là dễ bị tấn công tiêm code.

6

Vấn đề của Pickle là nó sẽ có thể gọi mã Python tùy ý. Xem http://nadiana.com/python-pickle-insecure để biết chi tiết. Trình phân tích cú pháp JSON chỉ phải tạo chuỗi, số, danh sách, dicts, v.v. Nó không bao giờ tạo ra các lớp do người dùng định nghĩa, do đó, nó không cần thực thi Python tùy ý.