我正在构建一个简单的 REST API,我只想接受 JSON 输入。我选择使用 app.use(express.json({strict: true}));
而不是 app.use(express.bodyParser());
。我正在通过 strict: true
认为这会增加一层针对无效 json 的安全性。还有其他人在做类似的事情吗?寻求具有此设置经验的人的意见。
谢谢
最佳答案
您的方法很好,因为您可能会减少应用的攻击区域。但是,我不确定是否有任何证据表明使用 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 实现,我认为这是一个相对安全的选择。
关于node.js - 使用 express.json 代替 express.bodyparser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17806381/