node.js - 使用 express.json 代替 express.bodyparser

标签 node.js express connect

我正在构建一个简单的 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/

相关文章:

javascript - Node.js 将 : store req. ip 表达为变量

javascript - node.js - 使用 socket.io 在公共(public) IP 上托管服务器

json - 使用 node express 代理 json 请求

javascript - 访问回调函数内的局部变量

javascript - Node 解压。如何制作文件名

node.js - 从 express 3.x 升级到 express 4.x - Mongo session 存储

node.js - 在授权路由中使用 express.static 中间件

javascript - Socket.io - 防止来自客户端的多个连接

node.js - 如何在 express 中设置默认路径(路由前缀)?

node.js - 如何在跨源请求中保留 session 数据?