使用Node.js替换Apache/nginx并执行PHP安全性



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

哦,我提到的是Windows服务器吗?

无论如何,我想要的是使一些权限工作以将PHP脚本保留在特定目录中。我正在考虑为每个网站创建用户,而我将应用适当的权限,而不是使用"运行as"之类的东西执行php.exe(假设可能是可能的)。我还有其他方法可以实现自己的目标吗?如果是这样,它们会更好?为什么呢?

另外,如果您有兴趣,我的代码看起来像:http://pastebin.com/gzjn1mnj

我还知道,使用我的服务器时,$ _post,$ _server,$ _cookie,$ _session等都缺少,但是我已经想到了如何修复并进行了一个成功的测试。

现在我已经感觉到了回答:你为什么要那样做?或不,Apache/nginx更好,等等。认为这是一个学习过程,我只是感兴趣的,我是否能够真正工作^^

谢谢。

恭喜您开发的混合包弗兰肯平台:)

切换到Linux使用过程.setuid

node.js是一个很棒的网络服务器,因此我可以看到上诉。您正在通过在Windows上同时运行节点和PHP在上游游泳。如果您有控制权,我将切换到Linux。

如果您在Linux中运行,Node具有一个内置的功能过程。SETGUID和process.setUID您必须root运行这些功能,但是node.js程序可以作为root spawn spawn a root spawn a node a node conto a node s sapawn a node spaint as a root sapawn as s a root spawn a node contim to ever an and and。监狱本身并将所有流量路由到儿童节点流程中,这些流程被监禁给特定用户。

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

您可以使用PHP安全模式,base_dir和其他INI命令尝试将PHP监禁到特定目录树。这是片状和不完整的,由于围绕这些错误和方式,这些功能中的许多功能已在最新版本中被弃用或删除。但是,使用您的php命令行调用中的INI文件传递。

使用第三级runas实用程序

要在Windows中真正具有用户安全性,您必须运行诸如autoit runas之类的东西http://www.autoitscript.com/autoit3/docs/functions/runas.htm

与普通runas命令相反,该命令可以指定一个密码,以便可以从节点过程中运行。

最新更新