Node.js Express框架安全问题

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

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

谢谢你的帮助!

———-

我find的一些资源:

优秀的演讲(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-

利用testing人员: https : //code.google.com/p/skipfish/

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

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

我写了一篇博客文章, 写了Secure Express.js应用程序的一个很好的起点。 它涵盖了zeMirco提到的其他一些超越csrf和头盔的东西。

另一件事是你不能比较express.js轨道。 他们是苹果和桔子。 例如,没有与Express捆绑在一起的ORM,实现或使用第三方模块是由您决定的。

我会尽力分解你的每一个顾虑。

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

再次,这些都是没有build立到明确的东西。 最接近的是XSS对模板注入的担心。 通常用于expression式输出的Jade或EJS模板默认编码<>“'和&,但请记住还有其他上下文,比如用户inputJavaScript或CSS,您将需要担心。

 -Session fixation and hijacking 

再看看上面的博客post,但Express是基于并使用大部分连接中间件的,其中一个是会话中间件。 这里最大的问题是正确设置你的cookie标志。

 -Cross-Site Vulnerabilities (Scripting, Request Forgery) 

往上看。 它也带有express.csrf()中间件。 提到的博客文章展示了如何实现它。

 -Mass Assignment 

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

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

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

你应该知道,如果你指定一个catch-allerror handling程序,你不应该重新启动服务器或者在该处理程序中做任何响应USER错误( 4xx范围)的阻塞操作,因为这可能导致DOS漏洞。 此漏洞在express-error-handler自动解决,并且服务会尽快closures(当活动连接耗尽或超时发生时),因此重新启动应该不是什么大问题。 实施这个行为在我的漏洞testing中做了很大的改变。

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