Tôi có một loạt các dự án python với các ứng dụng WSGI không đáng tin cậy bên trong chúng. Tôi cần phải chạy chúng một cách simulatiously và an toàn. Vì vậy, tôi cần hạn chế cho việc truy cập thư mục, sử dụng mô-đun python và giới hạn cho CPU và bộ nhớ.Mã Python chửi rủa
tôi xem xét hai phương pháp:
nhập qua imp-mô-đun WSGI đối tượng từ tập tin xác định, và chạy nó với pysandbox. Bây giờ tôi có
SandboxError: Read only object
khi thực hiện:self.config = SandboxConfig('stdout') self.sandbox = Sandbox(self.config) self.s = imp.get_suffixes() wsgi_obj = imp.load_module("run", open(path+"/run.py", "r"), path, self.s[2]).app … return self.sandbox.call(wsgi_obj, environ, start_response)
Sửa Python phiên dịch, loại trừ các module có khả năng nguy hiểm, chạy trong các quá trình song song, giao tiếp qua ổ cắm ZMQ/Unix. Tôi thậm chí không biết bắt đầu từ đâu.
Bạn có thể đề xuất điều gì?
Quá trình tách chắc chắn là một ý tưởng hay. Thậm chí tốt hơn là sử dụng ảo hóa. Tôi không biết về pysandbox, nhưng tôi nghe nói rằng các giải pháp hiện tại cho mã sandboxing Python không phải là đặc biệt tốt. –
Sandboxing trong CPython không phải là rất tốt, nhưng thông dịch viên Python khác, đặc biệt là PyPy, có hỗ trợ sandboxing hoàn chỉnh hơn. –
Tôi đã thử hộp cát PyPy. Nó quá phức tạp. – sashab