2012-04-13 31 views
5

Tôi muốn cung cấp kịch bản người dùng cuối (có thể chạy phía máy chủ) trong một ứng dụng. Tôi đã đọc xung quanh, và thấy rằng sandboxing là một vấn đề nhiều hơn tôi nghĩ.Kịch bản người dùng cuối

Tôi không thực sự quan tâm nội dung là ngôn ngữ. LUA, Python, JavaScript, tôi ổn với mọi thứ có thể đọc được.

Làm cách nào để chạy hàm trong tập lệnh không đáng tin cậy, chuyển một số thông tin và nhận thêm một số thông tin khác? Tôi đã đọc JVM Security Manager là một không-đi và Python là gần như không thể đóng hộp, nhưng tôi có rất ít kiến ​​thức về chủ đề và không thể thực sự đánh giá các nguồn.

Làm cách nào để tôi có thể giải thích một hàm trong JS có JSON (từ, nói, Java hoặc Python, hoặc thậm chí node.js) và lấy lại JSON được trả về?

Tôi muốn tránh việc thực hiện một trình thông dịch ngôn ngữ i-just-know-it-will-suck cho bản thân mình.

+3

JavaScript có vẻ là tùy chọn an toàn nhất ở đây. Nó được thiết kế cơ bản cho mục đích chính xác này. –

+1

Đối với hộp cát Python, có [một số lời khuyên] (http://wiki.python.org/moin/Asking%20for%20Help/How%20can%20I%20run%20an%20untrusted%20Python%20script%20safely%20 % 28i.e.% 20Sandbox% 29) ngoài kia. –

+0

@Lattyware: Tư vấn cho việc bảo mật CPython về cơ bản là vô ích, IMHO. Họ khuyên bạn nên chroot (đó là không an toàn) và ảo hóa (mà là tốn kém). –

Trả lời

4

Lua có khả năng sandbox tốt và sạch sẽ và đơn giản.

Nó có chức năng setfenv() có thể chạy mã trong một môi trường cụ thể. Mã không đáng tin cậy chỉ có thể truy cập vào những gì trong môi trường cụ thể.
Đối với các chức năng C, chẳng hạn như string.rep, bạn có thể ngăn bộ nhớ quá mức tiêu thụ bằng cách thay thế chúng bằng chức năng Lua hoặc cung cấp bộ cấp phát bộ nhớ tùy chỉnh cho lua_newstate.

Ngoài ra, nếu bạn quyết định sử dụng Lua cho mã đáng tin cậy và có giao diện với mã không đáng tin cậy, bạn có thể sử dụng coroutinesdebug.sethook để kiểm soát mức sử dụng CPU.

Lua Wiki có đơn giản example sandbox.
Các source code của số lua live demo cũng có thể được quan tâm.

+0

Cảm ơn bạn đã giới thiệu và tham khảo! Tôi đọc xung quanh, và quyết định tôi sẽ đi với điều này và xem nơi nó dẫn tôi. No trông tuyệt! – slezica

1

Tcl có mô hình hộp sanbox rất mạnh và được cho là một trong những ngôn ngữ tốt hơn cho kịch bản người dùng cuối. Bạn có thể đọc thêm về nó trên trang người đàn ông safe interpreter.

Các vấn đề liên quan