2012-11-05 8 views
5

Mam serwer WWW napisany w węźle node.js, to po prostu służy użytkownikowi statycznymi plikami. Aby dodać obsługę PHP, pomyślałem, że mogę pobrać PHP i udostępnić plik PHP.exe. To działa i będzie wystarczające, jeśli będzie używane przez pojedynczego użytkownika. W środowisku, w którym wielu użytkowników hostowałoby swoją witrynę na serwerze, spowodowałoby to ogromny problem bezpieczeństwa. Można użyć skryptu PHP do robienia tego, co chciałby on z innymi stronami internetowymi lub nawet całym serwerem.Użycie pliku node.js do zastąpienia apache/nginx i wykonania zabezpieczenia php

Czy wspomniałem, że jest to serwer Windows?

W każdym razie, więc chcę uzyskać pewne uprawnienia do utrzymania skryptu php w określonym katalogu. Zastanawiam się nad stworzeniem użytkownika dla każdej strony internetowej, na której zastosuję odpowiednie uprawnienia, a nie podczas wykonywania php.exe z użyciem czegoś takiego jak "uruchom jako" (zakładając, że jest to możliwe). Czy są inne sposoby osiągnięcia mojego celu? A jeśli tak, to czy będą lepsze? Dlaczego tak?

Także jeśli jesteś zainteresowany, mój kod wygląda następująco: http://pastebin.com/gZjN1mnj

Także jestem świadomy, że $ _POST, $ _SERVER, $ _COOKIE, $ _SESSION itp wszystko brakuje podczas korzystania z mojego serwera, ale już myślałem o tym, jak to naprawić i pomyślnie przeszliśmy z nim test.

Teraz już czuję odpowiedzi: dlaczego do cholery chcesz to zrobić? LUB nie, apache/nginx są lepsze, itp. Itd. Rozważ to jako proces uczenia się, interesowało mnie tylko to, czy mógłbym to wszystko naprawdę wykonać^^

Dziękuję.

+0

Możesz spróbować skonfigurować serwer php-fcgid za pomocą [php-fpm] (http://php.net/manual/en/install.fpm.php). –

+1

Wygląda na to, że chcesz mieć chroot dla Windows, więc spójrz na http://serverfault.com/questions/161507/is-there-a-windows-equivalent-to-chroot – Nelson

+0

Proszę zaktualizować link do pastebin, jego nie działa ! :) –

Odpowiedz

4

Gratulujemy różnej platformie Franken swój rozwój :)

Przełącz na Linux użytku process.setuid

node.js jest wielki serwer, więc widzę odwołanie. Płyniesz w górę, uruchamiając zarówno węzeł, jak i php w oknach. Jeśli masz kontrolę, przejdę na Linuksa.

Jeśli pracujesz w systemie Linux, Węzeł ma wbudowane funkcje process.setguid i process.setuid Musisz być rootem, aby je uruchomić, ale program node.js może działać jako root spawn proces węzła dla każdego użytkownika, następnie włamuj się i przekierowuj cały ruch do procesów węzła podrzędnego, które są więzione dla konkretnych użytkowników.

mają określoną php.ini dla każdego użytkownika

można skorzystać z trybu bezpiecznego, base_dir php i innych ini polecenia, aby spróbować i więzienia php do określonego drzewa katalogów. Jest to niekompletne i niekompletne, a wiele z tych funkcji zostało wycofanych lub usuniętych w najnowszych wersjach z powodu błędów i sposobów ich obejścia. Ale jego trywialne przekazanie w pliku ini za pomocą wywołania linii poleceń php.

Zastosowanie trzeciej pary narzędzie RunAs

Aby naprawdę mieć bezpieczeństwo użytkownika w oknach musisz uruchomić coś jak AutoIt usługę RunAs http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

W przeciwieństwie do normalnych runas dowodzić ten pozwala ci określ hasło, aby mogło zostać uruchomione z procesu węzła.

Powiązane problemy