2010-04-01 58 views
7

Trong trang Ideone người dùng tải lên mã để chạy trên máy chủ từ xa. Điều này tương tự như các chức năng của một thẩm phán trực tuyến.Làm thế nào để bảo vệ một thẩm phán trực tuyến chống lại mã độc hại?

Vấn đề là người dùng có thể tải lên mã cố gắng 'hack' hệ thống. Tôi hiểu rằng trong C và C++ thật dễ dàng để vô hiệu hóa một tập hợp nhất định các cuộc gọi hệ thống (vá một vài .dll), nhưng tôi không chắc chắn về các ngôn ngữ khác.

Bạn bảo vệ hệ thống của mình như thế nào nếu bạn hỗ trợ các ngôn ngữ cấp cao hơn (Erlang, Haskell) trên thẩm phán trực tuyến?

+0

Bạn có thể muốn tìm kiếm dự án "safeexec" trên github – daveagp

Trả lời

2

Chạy trong hộp cát với tư cách người dùng không có đặc quyền. Đó không phải là hoàn toàn dễ dàng, nhưng nó làm cho thanh để làm thiệt hại lâu dài hoặc thỏa hiệp nghiêm trọng rất cao. Nó cũng không phụ thuộc vào các tùy chọn hoặc sửa đổi có thể đối với thời gian chạy ngôn ngữ được đề cập. Nếu bạn đang đối phó với một ngôn ngữ được biên dịch đầy đủ (nghĩa là, không có trình thông dịch thời gian chạy), bạn cũng có thể làm điều này.

Ví dụ: lấy Erlang. Thiết lập chroot jail chỉ chứa những gì bạn cần để chạy Erlang. Thêm tài khoản người dùng không có đặc quyền và thư mục chính. Mang theo mã để chạy, xác minh tất cả các quyền/tập tin thư mục, thay đổi UID không đặc quyền và chạy mã.

Bạn có thể tìm thêm hướng dẫn chi tiết về cách thiết lập các ghi chú trong bài viết Wikipedia được tham chiếu ở trên. Các quy trình và yêu cầu hơi khác nhau đối với các hệ điều hành khác nhau.

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