使用node.jsreplaceapache / nginx并执行php安全性

我有一个用node.js编写的webserver,它几乎只是为用户提供静态文件。 要添加PHP支持,我想我可以下载PHP并给PHP.exe的文件。 如果单个用户在哪里使用,那么这就足够了。 对于多个用户在服务器上托pipe他们的网站的环境,它会带来一个巨大的安全问题。 人们可以使用PHP脚本来做任何他/她想要的任何其他网站,甚至整个服务器。

哦,我提到它是一个Windows服务器?

反正,所以我想要的是获得一些权限工作,保持PHP脚本在一个特定的目录。 我正在考虑为每个网站创build一个用户,在这个网站上,我将使用适当的权限,而不是像使用“run as”(假设这是可能的)执行php.exe。 还有其他方法可以实现我的目标吗? 如果是的话,他们会更好? 为什么这样?

另外如果你有兴趣,我的代码如下所示: http : //pastebin.com/gZjN1mnj

另外我知道$ _POST,$ _SERVER,$ _COOKIE,$ _SESSION等在使用我的服务器时都丢失了,但是我已经想到如何解决这个问题并且有一个成功的testing。

现在我已经感觉到了答案:为什么你会这么做? 或者不要,apache / nginx比较好,等等等等。考虑一下它是一个学习过程,我只是有兴趣知道我是否可以把它全部实际工作^^

谢谢。

恭喜你的发展:)混合袋法兰克平台

切换到Linux使用process.setuid

Node.js是一个伟大的networking服务器,所以我可以看到上诉。 通过在Windows上运行节点和php,您正在游泳。 如果你有控制权,我会切换到Linux。

如果你在Linux下运行,Node有一个内置函数process.setguid和process.setuid你必须是root才能运行这些,但是一个node.js程序可以作为root用户为每个用户产生一个节点进程,然后监狱本身和将所有stream量路由到被监禁到特定用户的子节点进程。

有一个特定的php.ini为每个用户

您可以使用PHP安全模式,base_dir和其他ini命令来尝试和监狱PHP到一个特定的目录树。 这是片状和不完整的,其中许多这些function已被弃用或删除在最新版本,因为这些错误和方法。 但它的微不足道的通过与您的PHP命令行调用ini文件。

使用第三方RUNAS实用程序

为了在Windows中真正拥有用户安全性,您必须运行诸如autoIT RunAs之类的东西http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

与普通的runas命令相反,这个命令可以让你指定一个密码,以便它可以从你的节点进程运行。