2012-11-05 37 views
5

Tôi đã có một máy chủ web được viết bằng node.js, nó khá nhiều chỉ phục vụ người dùng với các tệp tĩnh. Để thêm hỗ trợ PHP cho nó tôi nghĩ rằng tôi chỉ có thể tải về PHP và cung cấp cho PHP.exe tập tin. Điều đó hoạt động và sẽ là đủ nếu nó được sử dụng bởi một người dùng duy nhất. Đối với một môi trường mà nhiều người dùng sẽ lưu trữ trang web của họ trên máy chủ, tuy nhiên nó mang lại một vấn đề bảo mật lớn. Người ta có thể sử dụng một kịch bản PHP để làm bất cứ điều gì anh/cô ấy muốn với bất kỳ trang web nào khác hoặc thậm chí toàn bộ máy chủ.Sử dụng node.js để thay thế apache/nginx và thực thi bảo mật php

Tôi đã đề cập đến nó là một máy chủ Windows?

Dù sao thì, điều tôi muốn là có một số quyền làm việc để giữ tập lệnh php trong một thư mục cụ thể. Tôi đang suy nghĩ theo hướng tạo người dùng cho mỗi trang web mà tôi sẽ áp dụng các quyền thích hợp và hơn khi thực hiện php.exe bằng cách sử dụng một cái gì đó như 'chạy dưới dạng' (giả sử có thể). Có cách nào khác để tôi đạt được mục tiêu của mình không? Và nếu như vậy họ sẽ tốt hơn? Tại sao như vậy?

Ngoài ra nếu bạn quan tâm, mã của tôi trông giống như: http://pastebin.com/gZjN1mnj

Cũng Tôi biết rằng $ _POST, $ _SERVER, $ _COOKIE, $ _SESSION vv đều mất tích khi sử dụng máy chủ của tôi, nhưng tôi đã nghĩ về cách để có được cố định và đã có một thử nghiệm thành công với nó.

Bây giờ tôi đã cảm nhận được câu trả lời: tại sao bạn lại làm điều đó? HOẶC không, apache/nginx là tốt hơn, vv vv Hãy xem xét nó một quá trình học tập, tôi đã chỉ quan tâm cho dù tôi có thể làm cho nó tất cả để thực sự làm việc ^^

Cảm ơn bạn.

+0

Bạn có thể thử thiết lập máy chủ php-fcgid bằng [php-fpm] (http://php.net/manual/en/install.fpm.php). –

+1

Vì vậy, có vẻ như bạn muốn chroot cho cửa sổ, vì vậy hãy xem http://serverfault.com/questions/161507/is-there-a-windows-equivalent-to-chroot – Nelson

+0

Vui lòng cập nhật liên kết pastebin của bạn, nó không hoạt động ! :) –

Trả lời

4

Xin chúc mừng trên nền tảng franken túi hỗn hợp phát triển của bạn :)

Chuyển sang Linux sử dụng process.setuid

Node.js là một máy chủ web lớn, vì vậy tôi có thể nhìn thấy sự hấp dẫn. Bạn đang bơi ngược dòng bằng cách chạy cả hai nút và php trên cửa sổ. Nếu bạn có quyền kiểm soát, tôi sẽ chuyển sang Linux.

Nếu bạn đang chạy trong Linux, Node có các hàm được xây dựng trong process.setguid và process.setuid Bạn phải root để chạy chúng, nhưng một chương trình node.js có thể chạy dưới dạng root đẻ một quá trình nút cho mỗi người dùng, sau đó tự giam giữ và định tuyến tất cả lưu lượng truy cập đến các quá trình nút con được bỏ tù cho người dùng cụ thể.

Có một php.ini cụ thể cho mỗi người dùng

Bạn có thể sử dụng php chế độ an toàn, base_dir và lệnh ini khác để thử và tù php để một cây thư mục cụ thể. Điều này là không ổn định và không đầy đủ và nhiều tính năng trong số này đã không được chấp nhận hoặc bị loại bỏ trong các bản phát hành mới nhất do lỗi và cách thức xung quanh các tính năng này. Nhưng tầm thường của nó để vượt qua trong một tập tin ini với cuộc gọi dòng lệnh php của bạn.

Sử dụng thứ ba viên hoặc tiện ích runas

Để thực sự có an ninh sử dụng trong các cửa sổ, bạn sẽ phải chạy một cái gì đó giống như AutoIt runas http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

Như trái ngược với runas bình thường lệnh này cho phép bạn chỉ định một mật khẩu để nó có thể được chạy từ quá trình nút của bạn.

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