Tôi đã chơi đùa với điều này gần đây. Yêu cầu của tôi bao gồm Python 3.x, ngay lập tức có các giải pháp như Jython và IronPython. Tôi vẫn do dự khi đi theo con đường đó, vì tôi chưa bao giờ tin tưởng các máy ảo ngôn ngữ kiểu người dùng.
Đó là trường hợp, vì mục đích của tôi, giải pháp tốt nhất cho đến nay là đưa nó ra khỏi bàn tay của thông dịch viên hoàn toàn và chạy trong một thùng chứa bị khóa chặt (OpenVZ hoặc tương tự). Tuy nhiên, điều này là lấy một cái búa cho vấn đề (mặc dù không phải là búa tạ của ảo hóa đầy đủ), và có thể không khả thi nếu bạn phải chạy một số lượng rất lớn các phiên dịch riêng biệt.
Một điều ngược lại, là vì nó không dựa vào sự bảo mật của bất kỳ trình thông dịch cụ thể nào, bạn có thể sử dụng bất kỳ ngôn ngữ tùy ý nào bạn muốn trong môi trường - bạn không phải tự buộc mình vào Python hoặc tập hợp các ngôn ngữ/triển khai có sẵn cho JVM hoặc .NET/Mono.
Nguồn
2009-11-08 03:23:27
Xin lỗi Alex, chúng tôi vừa có điều kiện chạy đua. Tôi đã chỉnh sửa câu hỏi để làm cho nó sử dụng thuật ngữ Python (bị hạn chế) cho những gì OP yêu cầu (an toàn). – ddaa
@ddaa, tôi không nghĩ rằng OP muốn cụ thể rexec - chỉ là một "máy ảo" an toàn "Sandboxed" Python ("sandbox" là thuật ngữ thường được sử dụng trong các ngữ cảnh như vậy). –