Node.JS Webserver中的安全性

jwe*_*ner 32 javascript security webserver http node.js

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

不过,我担心安全问题.如果我使用Node.JS的http模块编写自定义Web服务器,我是否可能极易受到攻击?Apache/IIS已经有多年(以及数年和数年)的专业团队在他们的网络服务器中建立安全性,而且人们仍然在寻找漏洞.我的自制网络服务器是否可能更容易受到攻击?

我可以集中精力为我的网络服务器构建一个良好的安全层?有没有关于这个主题的好文章?

Rob*_*ita 9

之所以有多年的专业团队在Apache/IIS中构建安全性,是因为这些都是包含服务器的.默认情况下,他们可以使用所有类型的服务运行需要在发现某个漏洞时修补的软件版本X等.

我发现Node.JS的一个好处就是你告诉它你想要在你的特定应用程序的操作系统级别上运行什么.如果你不想要它,就没有中间人层.如果我在我管理的服务器上托管它是操作系统级端口和Web应用程序代码,我只需要担心.没有Apache配置文件,模块更新等.

因此,当涉及到Node.JS中的安全性时,担心在对其进行操作之前清除外部信息,验证可能有害的操作上的身份等.尽可能关闭.使用SFTP将文件传输到远程托管服务器,只需打开必要的端口,Web应用程序即可正常运行.


Zed*_*Zed 8

我同意anm和schaermu关于使用反向代理的信息,以便访问者不直接访问您的应用程序,即使这与稳定性有关,而非安全性.

我想补充一点,您还必须考虑安全地安装Node本身及其模块.特别是,永远不要使用此方法安装npm:

curl http://npmjs.org/install.sh | sudo sh
Run Code Online (Sandbox Code Playgroud)

这基本上是使用不安全的HTTP从网络获得的任何内容的root shell,根本没有验证,甚至不知道你在跟谁说话.这可能导致使用非常基本且广为人知的方法严重损害整个系统,如果您的系统受到损害,那么您的应用程序是否位于反向代理,防火墙或任何其他方面后无关紧要.有关更全面的解释,请参阅此答案.


sch*_*rmu 5

尝试使用Nginx作为前端网络服务器来提高稳定性和安全性.检查谷歌以获取该主题的一些资源.

  • 此时NginX无法在Http 1.1中代理,因此如果你使用NodeJS + websockets,在这种情况下NginX不是团队成员 (2认同)