Node.JS Webserver中的安全性

所以,我正在学习Node.JS的方法,到目前为止我都很喜欢它。 我有几个项目已经在工作,我想我可以利用nodejs。

不过,我担心安全问题。 如果我使用Node.JS的http模块编写一个自定义的networking服务器,我是否可能超级受到攻击? Apache / IIS已经有多年 (和多年)的专业团队将安全build设到他们的networking服务器,仍然有人继续发现漏洞。我的自制Web服务器可能会更容易攻击吗?

我可以专注于什么东西来build立一个安全的好层到我的networking服务器? 那里有没有好的文章涵盖了这个话题?

我同意anm和schaermu关于使用反向代理,以便您的访问者不直接访问您的应用程序,即使这样做确实比稳定性更重要。

我想补充一点,你也必须考虑安全地安装Node本身及其模块。 特别是, 不要使用这种方法安装npm:

curl http://npmjs.org/install.sh | sudo sh 

这基本上是通过使用不安全的HTTP从networking上获得任何东西,而根本不给予任何validation,甚至不知道你在和谁通话。 这可能导致整个系统使用非常基本和众所周知的方法的严重危害,如果您的系统受到了威胁,那么无论您的应用程序是在逆向代理,防火墙还是其他任何方面。 看到这个答案更全面的解释。

为什么有几年和几年的专业团队安全到Apache / IIS是因为这些都是包含服务器。 他们可以在默认情况下运行所有​​types的服务,运行软件的X版本,当发现一些漏洞时需要打补丁。

我发现关于Node.JS的一个很棒的事情是,你告诉它你想在你的特定应用程序的操作系统级别上运行什么。 没有中间层,如果你不想要的话。 所有我不得不担心,如果我在我pipe理的服务器上托pipe它是OS级别端口和Web应用程序代码。 没有Apacheconfiguration文件,模块更新等

因此,当涉及到Node.JS中的安全性时,担心在对其进行操作之前清理外部信息,请validation可能有害的操作的身份等。尽可能地closures。 使用SFTP将您的文件传输到远程托pipe服务器,只需打开必要的端口,以使Web应用程序正常工作。

尝试使用Nginx作为您的前端Web服务器,以提高稳定性和安全性。 检查谷歌有关该主题的一些资源。

您可能想要使用反向代理。