使用express.json而不是express.bodyparser

Xer*_*rri 5 connect node.js express

我正在构建一个简单的REST API,我只想接受JSON输入.我选择使用app.use(express.json({strict: true}));而不是app.use(express.bodyParser());.我正在strict: true思考这会为无效的json增加一层安全性.其他人做类似的事吗?寻找有此设置经验的人的意见.谢谢

Dan*_*ohn 2

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

您可以strict: true在这里确切地看到什么意思:

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

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

它只是确保 JSON 以 { 或 [ 开头。你仍然依赖 Google 不会像 Rails 使用 YAML 那样搞砸 V8 中的 JSON.parse 实现,我认为这是一个相对安全的赌注。

  • 嘿....只是对此的补充。看看http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html (5认同)