Tôi muốn cho phép người dùng tạo tập lệnh Ruby thực hiện tính toán trên một số dữ liệu nằm trên máy chủ web và sau đó xuất kết quả. Các tập lệnh được thực thi trên máy chủ. Có cách nào để thực hiện điều này một cách an toàn không?Thực thi mã ruby do người dùng cung cấp trên máy chủ web
Cụ thể hơn, tôi muốn:
- hạn chế nguồn kịch bản có thể sử dụng (bộ nhớ và CPU), và hạn chế thời gian chạy
- hạn chế mà cốt lõi lớp kịch bản có thể sử dụng (ví dụ như chuỗi , Fixnum, phao, Toán vv)
- hãy truy cập kịch bản và trả lại dữ liệu
- đầu ra bất kỳ lỗi nào cho người dùng
Có thư viện hoặc dự án nào làm những gì tôi yêu cầu không? Nếu không phải trong Ruby, có lẽ một số ngôn ngữ khác?
Trông giống như những gì tôi đang tìm kiếm. Cảm ơn bạn. – nolk
Chỉ cần tò mò - tại sao một 'instance_eval' ở đây thay vì chỉ gọi' clean_room.binding.eval (command) '? –
@Matt, #binding là riêng tư, vì vậy bạn phải sử dụng một chút "foo" để có được nó. –