pickle serialize một object Python thành byte stream và deserialize ngược lại (dựng lại object). Khác JSON: giữ được cấu trúc Python phức tạp (object tùy biến, tham chiếu vòng) nhưng chỉ Python đọc được và không cross-language.
Nguy hiểm: quá trình unpickle có thể gọi constructor/hàm bất kỳ (qua hook như __reduce__), nên một payload độc hại khiến pickle.loads thực thi mã tùy ý (RCE) ngay lúc load — không cần gọi thêm gì.
Quy tắc: không bao giờ unpickle dữ liệu từ nguồn không tin cậy (request, file upload, cache dùng chung). Trao đổi qua mạng dùng JSON; nếu buộc phải pickle, ký HMAC và chỉ chấp nhận dữ liệu tự sinh.