2012-02-11 13 views
6

Tôi đang phát triển nền tảng cho phép người dùng tạo ứng dụng bằng PHP. Có cách nào an toàn để cho phép người dùng thực hiện việc này không? Bạn có thể hạn chế sử dụng các hàm có thể làm hỏng mã nguồn hiện tại hoặc máy chủ không? Tôi chỉ muốn họ có thể sử dụng các chức năng cơ bản và cấp cho họ quyền truy cập vào 1 cơ sở dữ liệu. Điều này phải có thể, vì sự tồn tại của các máy chủ được chia sẻ, được điều hành bởi nhiều người dùng. ...Có cách nào an toàn để cho phép người dùng thêm PHP của riêng họ vào máy chủ của tôi không?

Bạn có lời khuyên nào không?

Trả lời

3

Bạn có thể liệt kê tất cả các chức năng bị vô hiệu hóa trong tệp php.ini của mình. Bạn có thể đặt nó khác nhau cho mỗi vhost

disable_functions = "exec,passthru" 

Máy chủ lưu trữ được chia sẻ giống như tôi đã nói ở trên.

chức năng khác có thể được coi là Diable: readfile, fopen, fsockopen, popen, đào tạo Quản lý, bao gồm, stream_context_create, chmod, chown

Danh mục đầy đủ có thể được tìm thấy here

Nhưng nếu bạn đang sử dụng các chức năng này bên trong mã của bạn, tốt hơn là làm cho tất cả các tệp mã chỉ đọc cho người dùng apache hoặc cho tất cả, trong trường hợp này là chown và chmod vô hiệu hóa đóng vai trò lớn.

+1

Bạn cũng có thể thực hiện việc này trong cấu hình vhost. – remy

+0

@remy tốt bắt.Đã chỉnh sửa –

+0

điểm nào trong việc vô hiệu hóa eval? –

1

Tôi đã từng chạy một máy chủ dùng chung PHP safe mode, nhưng dường như nó không còn được dùng nữa.

Một giải pháp tốt hơn là chạy các quy trình PHP của mỗi người dùng trong một tài khoản người dùng khác nhau, trong một nhà tù chroot và để hệ điều hành lo lắng về bảo mật. Người dùng sẽ có thể tải lên và chạy mã tùy ý, nhưng miễn là mã được tạo hộp cát đúng cách, họ sẽ không thể gây hại nhiều.

Bạn cũng có thể sử dụng hạn ngạch đĩa. Sử dụng các dấu vết cho việc sử dụng bộ nhớ cho mỗi người dùng và xem xét việc không cho phép các kết nối mạng (đến và đi).

Đối với cơ sở dữ liệu, chỉ cần thiết lập cơ sở dữ liệu với một cơ sở dữ liệu duy nhất, với quyền truy cập chỉ riêng của chúng và không cung cấp cho họ đặc quyền để tạo thêm.

3

Không bao giờ làm điều này trước đây, nhưng tôi nghĩ rằng cách tiếp cận này có thể giúp bạn với một môi trường lành mạnh và an toàn.

Nếu bạn đang sử dụng ubuntu (debian based) tôi khuyên bạn nên tạo một jailed chroot. Từ liên kết

Một chroot cơ bản là một thư mục đặc biệt trên máy tính của bạn mà ngăn chặn các ứng dụng, nếu chạy từ bên trong thư mục đó, từ file truy cập bên ngoài thư mục. Theo nhiều cách, chroot giống như cài đặt hệ điều hành khác trong hệ điều hành hiện tại của bạn .

Bạn cũng phải cài đặt phiên bản PHP chuyên dụng phải được sử dụng bởi các ứng dụng được chạy từ bên trong thư mục chroot'd.

Bạn có thể cấu hình php.ini của bạn với "max_execution_time", "disable_functions", ... vv

này là chính xác những gì bạn cần thực sự.

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