nodejs作为http服务器有多强大?

时间:2011-07-18 15:20:09

标签: javascript security http node.js

如果我使用nodejs的http模块制作一个简单的http服务器,我需要做多少验证/检查?

模块是否会处理安全问题,例如格式错误的请求和带有恶意标头值的请求?模块是否确保一切都遵循http规范,或者我是否必须进行大量检查以确保我的服务器不容易崩溃?

编辑:假设nodejs没有做任何真正的验证,我很确定是这样的。我需要做些什么来确保我的服务器不易被破坏?

2 个答案:

答案 0 :(得分:1)

什么是恶意标头值?节点是低级别的,因此很多东西都没有被检查。但你必须看看那些东西。但它不像有人可以发送“执行0xFA894224”或其他东西。可能存在的唯一漏洞就是允许格式错误的请求(例如,您可能会获得request.location: "\*\*\* CHINAAA \*\*\*",忘记启动套接字关闭事件,或者抛出JavaScript错误并正常终止。

你可以随时检查自己是否有这些东西,或者使用try catch块,process.on等。当然,并不是说可能没有缓冲区溢出或某些地方,但是不太可能考虑节点是建立在v8之上,许多库都是纯JavaScript

编辑: 如何阻止随机崩溃:

process.on('uncaughtException',function() {
 /* ignore error */
});

答案 1 :(得分:-1)

NodeJS并未被用作面向世界的HTTP服务器。但是,它的HTTP功能可用于将请求代理到适当的Web服务器。

偏离主题,但Nginx非常擅长这样做,因为它拥有稳定的线程数。