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你的代码是否易受攻击的问题,或者如果你使用的第三方模块是…
我可以立即想到两个模块:
- csrf :CRSF保护中间件。
- 头盔 :实现各种安全头的中间件
有一点需要注意的是bodyParser。 见http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
你应该知道,如果你指定一个catch-allerror handling程序,你不应该重新启动服务器或者在该处理程序中做任何响应USER错误( 4xx
范围)的阻塞操作,因为这可能导致DOS漏洞。 此漏洞在express-error-handler
自动解决,并且服务会尽快closures(当活动连接耗尽或超时发生时),因此重新启动应该不是什么大问题。 实施这个行为在我的漏洞testing中做了很大的改变。
顺便说一句,简单地忽略所有未处理的错误是不安全的。 这将使您的应用程序处于未定义状态,这只会提供另一种types的DOS漏洞。