Tôi muốn có khả năng cho phép người dùng gửi mã JavaScript tùy ý, sau đó được gửi đến máy chủ Node.JS và được thực thi an toàn trước khi đầu ra được gửi lại cho nhiều khách hàng (dưới dạng JSON). Chức năng eval
xuất hiện trong đầu, nhưng tôi biết điều này có nhiều mối quan tâm về bảo mật (mã người dùng đã gửi sẽ có thể truy cập File API của Node, v.v.). Tôi đã thấy một số dự án như Microsoft Web Sandbox và Google Caja cho phép thực thi đánh dấu và kịch bản đã khử trùng (để nhúng quảng cáo của bên thứ ba trên trang web), nhưng có vẻ như đây là những công cụ phía máy khách và tôi không chắc liệu chúng có thể được sử dụng an toàn trong Node.Hộp cát an toàn và thực thi JavaScript do người dùng gửi?
Có cách nào tiêu chuẩn để sandbox và thực thi JavaScript không đáng tin cậy trong Nút, nhận đầu ra. Có sai lầm khi thử và làm điều này phía máy chủ không?
EDIT: Điều quan trọng là người dùng có thể tận dụng toàn bộ khả năng của JavaScript, trên thực tế sẽ tốt hơn nếu có thể chọn và chọn API nào sẽ được cung cấp cho mã người dùng.
EDIT: Tôi sẽ tiếp tục và cập nhật những gì tôi đã tìm thấy. Mô-đun Sandcastle này (bcoe/sandcastle
) dường như nhằm mục đích làm những gì tôi có trong tâm trí. Bạn không chắc chắn nó an toàn đến mức nào, nhưng vì tôi không phải vì bất cứ điều gì quá quan trọng, tôi nghĩ tôi sẽ thử nó. Tôi sẽ thêm câu trả lời của riêng mình nếu tôi có thể thực hiện thành công việc này.
Tại sao phải thực thi trên máy chủ của bạn, thay vì trên máy khách? – delnan
Tôi nghĩ rằng đây là một sai lầm, nhưng bạn có thể thử nút 'vm' công cụ - http: //nodejs.org/api/vm.html – JoshRagem
Đây là một khái niệm trò chơi lập trình cho vui, tôi không thể tin tưởng khách hàng thực thi mã. Tôi muốn làm điều đó phía máy chủ vì lý do đó và bởi vì đầu ra sẽ được serialized và gửi đến 1 hoặc nhiều khách hàng khác. Nó trông giống như mô-đun vm hoặc một cái gì đó gói nó là những gì tôi muốn. –