5

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

4

1 回答 1

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'));

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

于 2013-07-23T09:54:27.160 回答