我正在寻找应添加到Node / Express应用程序的模块,以解决下面列出的一般安全问题:
感谢您的帮助!
我发现了一些资源:
优秀的演讲(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
答案 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)
答案 2 :(得分:7)
要警惕的一件事是bodyParser。见http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
答案 3 :(得分:1)
您应该知道,如果您指定了一个catch-all错误处理程序,则不应重新启动服务器或在该处理程序中执行任何阻止以响应USER错误(4xx
范围),因为它可能导致DOS漏洞。此漏洞在express-error-handler
中自动解决,服务将尽快关闭(当活动连接耗尽或发生超时时),因此重新启动应该不是什么大问题。实现这种行为在我的漏洞测试中产生了很大的不同。