Node.js Express Framework安全问题

时间:2013-01-30 19:30:07

标签: security node.js express

我正在寻找应添加到Node / Express应用程序的模块,以解决下面列出的一般安全问题:

  • 注入漏洞(JavaScript,SQL,Mongo,HTML)
  • 会话固定和劫持
  • 跨站点漏洞(脚本,请求伪造)
  • 质量分配
  • 在此处插入相关问题

感谢您的帮助!

----------

我发现了一些资源:

  

优秀的演讲(11/2012):http://lanyrd.com/2012/asfws/sxzbm/(见幻灯片)

     

ServerFault问题(2011-2012):https://serverfault.com/questions/285123/is-node-js-mature-for-enterprise-security

     

主题博客帖子(9/2012):http://codefol.io/posts/29-Why-Rails-and-not-Sinatra-or-Node-js-

     

漏洞利用测试员:https://code.google.com/p/skipfish/

     

护照模块:https://github.com/jaredhanson/passport

     

EveryAuth模块:https://github.com/bnoguchi/everyauth

4 个答案:

答案 0 :(得分:45)

我写了一篇博文,为Writing Secure Express.js Apps提供了一个很好的起点。除了zeMirco提到的csrf和头盔之外,它还包括其他一些东西。

另一件事是你无法将express.js与rails进行比较。它们是苹果和橘子。例如,没有与Express捆绑在一起的ORM,第三方模块的实现或使用取决于您。

我会尝试分析您的每一个问题。

-Injection Vulnerabilities (JavaScript, SQL, Mongo, HTML)

同样,这些都不是快递中的内容。最接近的是XSS担心模板中的注入问题。通常与快速输出编码的Jade或EJS模板< > “'和&默认情况下,但请记住还有其他上下文,例如用户输入JavaScript或CSS,您需要担心。

-Session fixation and hijacking

再次看到上面的博客文章,但Express基于并使用了大多数connect中间件,其中一个是会话中间件。这里最重要的是正确设置你的cookie标志。

-Cross-Site Vulnerabilities (Scripting, Request Forgery)

见上文。它还附带了express.csrf()中间件。提到的博文显示了如何实现它。

-Mass Assignment

不是express.js的问题,因为它没有适用这种类型的易受攻击的概念,但是你编写的自定义逻辑实际上可能容易受到这个问题的影响,所以再次验证你的代码是否有问题易受攻击或者您使用的第三方模块是......

答案 1 :(得分:9)

我可以立即想到两个模块:

  1. csrf:CRSF保护中间件。
  2. helmet:实现各种安全标头的中间件

答案 2 :(得分:7)

答案 3 :(得分:1)

您应该知道,如果您指定了一个catch-all错误处理程序,则不应重新启动服务器或在该处理程序中执行任何阻止以响应USER错误(4xx范围),因为它可能导致DOS漏洞。此漏洞在express-error-handler中自动解决,服务将尽快关闭(当活动连接耗尽或发生超时时),因此重新启动应该不是什么大问题。实现这种行为在我的漏洞测试中产生了很大的不同。

顺便说一下,简单地忽略所有未处理的错误是不安全的。这将使您的应用程序处于未定义状态,这只会呈现另一种类型的DOS漏洞。