2012-11-05 62 views
5

我有一個用node.js編寫的web服務器,它幾乎只是爲用戶提供靜態文件。爲了添加PHP支持,我想我可以下載PHP並將PHP.exe文件。如果一個用戶在哪裏使用,那麼這樣做就足夠了。對於多用戶在服務器上託管網站的環境,它會帶來巨大的安全問題。人們可以使用PHP腳本來做任何他/她想要的任何其他網站,甚至整個服務器。使用node.js替換apache/nginx並執行php安全

哦,我提到它是一個Windows服務器?

無論如何,所以我想要的是獲得一些權限,以保持php腳本在特定的目錄。 我正在考慮爲每個網站創建一個用戶,在這個網站上我將應用相應的權限,而不是像使用'run as'(假設可能)那樣執行php.exe。 有沒有其他方法可以實現我的目標?如果是的話,他們會更好?爲什麼這樣?

此外,如果你有興趣,我的代碼如下所示:http://pastebin.com/gZjN1mnj

而且我知道,$ _ POST,$ _ SERVER,$ _COOKIE,$ _SESSION等等都在使用我的服務器時,所有缺少的,但我我們已經想到如何解決這個問題並且有一個成功的測試。

現在我已經感覺到了答案:爲什麼你會這麼做?或者不要,apache/nginx比較好等等等等。 考慮它是一個學習過程,我只是想知道我是否可以全部實際工作^^

謝謝。在魚龍混雜弗蘭肯平臺上

+0

您可以嘗試使用[php-fpm](http://php.net/manual/en/install.fpm.php)設置php-fcgid服務器。 –

+1

所以看來你想chroot的Windows,所以看看http://serverfault.com/questions/161507/is-there-a-windows-equivalent-to-chroot – Nelson

+0

請更新您的pastebin鏈接,它不工作! :) –

回答

4

恭喜你患上:)

切換到Linux的使用process.setuid

Node.js的是一個偉大的網絡服務器,所以我能看到的吸引力。通過在Windows上運行節點和php,您可以向上遊游泳。如果你有控制權,我會切換到Linux。

如果你在Linux中運行,Node有一個內置函數process.setguid和process.setuid你必須是root才能運行這些,但是一個node.js程序可以作爲root用戶爲每個用戶產生一個節點進程,然後監獄本身並將所有流量路由到被監禁給特定用戶的子節點進程。

有一個特定的php.ini每個用戶

您可以使用PHP安全模式,base_dir等INI命令嘗試和監獄PHP到一個特定的目錄樹。這是片狀和不完整的,因爲這些缺陷和方法,最新版本中的許多這些功能已被棄用或刪除。但它的微不足道的傳遞你的php命令行調用ini文件。

採用第三pary RUNAS實用

真的有用戶安全窗口,你必須像AutoIt的運行方式運行的東西 http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

由於不是正常的runas命令這一個可以讓你指定一個密碼,以便它可以從節點進程運行。