2011-12-08 47 views
8

Tôi có python được nhúng trong một ứng dụng dưới dạng nền tảng kịch bản để người dùng có thể viết các tập lệnh python. Tôi đang cố gắng để ngăn chặn nhập khẩu để họ không thể gây ra thiệt hại trong anyway và phải dính vào API được cung cấp.Ngăn chặn nhập khẩu bằng Python

tôi đã đưa ra với mã Python sau:

__builtins__ .__import__= None 
reload = None 

này dường như để ngăn chặn nhập khẩu và ngăn ngừa tải lại các mô-đun. Công tác phòng chống tải lại là bắt buộc để họ không thể tải lại các nội trang dựng sẵn cung cấp cho họ một lần nhập hoạt động.

Tuy nhiên, tôi không phải là chuyên gia về Python. Có bất kỳ điều gì khác mà tôi thiếu mà người dùng vẫn có thể thực hiện để nhập mô-đun không?

Cảm ơn

+3

Vui lòng xem [câu hỏi] này (http://stackoverflow.com/q/3068139/183066). – jcollado

+1

Cảm ơn. Từ bài đăng đó, nó được nhấn mạnh rằng thực sự có rất nhiều thứ nguy hiểm khác ngoài việc nhập khẩu để ngăn chặn việc nhập có lẽ không đủ. –

+0

Nếu người dùng đang chạy một ứng dụng trên máy móc của mình, điều gì có thể "nguy hiểm" về việc cho phép anh ta sử dụng đầy đủ Python? Hay ứng dụng của bạn sẽ nhận được tập lệnh trong máy chủ, từ những người dùng từ xa không tin cậy? – jsbueno

Trả lời

2

Điều bạn có thể muốn là chạy Python trong hộp cát. Có một số cách để làm điều này, ví dụ PyPy có sandboxing support.

Bạn cũng có thể thử sandboxing quy trình Python bằng các công cụ bên ngoài, nhưng tôi cho rằng điều này phụ thuộc vào hệ điều hành.

+1

Cảm ơn bạn đã liên kết về hộp cát. Tôi đã thực sự tìm kiếm một cái gì đó mà sẽ làm việc chung hơn mà không PyPy. Mã tôi đăng hoạt động trên cả CPython và IronPython chẳng hạn. –

+0

Thật dễ dàng để hack một thứ gì đó để ngăn chặn nhập khẩu, và chúng có thể sẽ luôn bị người thông minh ghi đè. Pypy thực hiện sandboxing trong cấu trúc của nó, thực hiện đúng cách. – jsbueno