使用express.json而不是express.bodyparser

我正在构build一个简单的REST API,我只想接受JSONinput。 我select使用app.use(express.json({strict: true})); 而不是app.use(express.bodyParser()); 。 我正在通过strict: true想法,这将增加一层针对无效json的安全性。 任何人做类似的事情? 寻找来自具有此设置经验的人的意见。 谢谢

你的方法很好,因为你有可能减less你的应用程序的攻击区域。 但是,我不确定是否有任何证据表明使用bodyParser(这将允许一些格式不正确的JSON,以及url编码和多部分forms编码的数据)将是任何有意义的风险。

你可以看到究竟是什么strict: true意义在这里:

http://www.senchalabs.org/connect/json.html

 if (strict && '{' != buf[0] && '[' != buf[0]) return next(utils.error(400, 'invalid json')); 

它只是确保JSON以{或a []开头。 你仍然依靠Google,不要像Rails那样用YAML来搞乱V8的JSON.parse实现,我认为这是一个相对安全的select。