Tôi muốn cho phép người dùng gửi mã nguồn Java/Scala từ trình duyệt của khách hàng và biên dịch/thực thi nó trên máy chủ. Tuy nhiên, đồng thời, tôi muốn hạn chế người dùng chạy mã độc hại tiềm ẩn trên máy chủ.Scala/Java Sandbox cho mã không đáng tin cậy
Ví dụ: tôi muốn ngăn truy cập hệ thống tệp cũng như truy cập mạng vào/ra đối với mã nguồn đã gửi. Tôi nên hạn chế những gì khác?
Tôi nên cho phép các thư viện Java/Scala nào rõ ràng cho khách hàng? Ví dụ, ở đây là các lý do không được phép của API/thư viện:
java.lang.System
java.lang.Runtime
java.io.*
java.nio.*
scala.io.*
java.net
Làm thế nào để đúng cách sandbox không tin cậy mã Java/Scala?
Tôi có thể sai nhưng trước tiên, bạn nên triển khai "danh sách trắng" và API không cho phép thứ hai sẽ không đủ. Nhưng một lần nữa, về chiều hướng này, tôi không chắc chắn về toàn bộ phạm vi. – Lucio
Tôi sẽ sử dụng * cách tiếp cận môi trường bị cô lập *. Tức là, không giới hạn mã hoặc gói sẵn có, nhưng giới hạn môi trường - tức là không có quyền truy cập mạng (hoặc giới hạn/ảo hóa), không truy cập mạng (hoặc giới hạn/ảo hóa). Điều này không trả lời câu hỏi vì nó không nói * làm thế nào * để tạo ra một môi trường hạn chế như vậy, nhưng tôi tin rằng đó là một cách tiếp cận lành mạnh cho một dịch vụ "codepad/execution" trực tuyến. – user2864740
@ user2864740 + cấm những thứ như 'System.exit()' –