57

我正在寻找应该添加到 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

4 回答 4

46

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

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

我将尝试对您的每一个问题进行细分。

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

同样,这些不是 express 内置的东西。最接近的事情是 XSS 担心模板中的注入。Jade 或 EJS 模板通常与 express output encode < > " ' 和 & 默认使用,但请记住还有其他上下文,例如用户输入到 JavaScript 或 CSS,您需要担心。

-Session fixation and hijacking

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

-Cross-Site Vulnerabilities (Scripting, Request Forgery)

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

-Mass Assignment

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

于 2013-01-31T03:11:12.680 回答
9

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

  1. csrf:CRSF 保护中间件。
  2. 头盔:实现各种安全标头的中间件
于 2013-01-30T19:47:12.590 回答
7

需要注意的一件事是 bodyParser。见http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html

于 2013-09-06T23:23:26.017 回答
1

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

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

于 2013-10-21T09:21:19.390 回答