Node.js 防止api调用中的SQL注入

Node.js 防止api调用中的SQL注入,node.js,reactjs,postgresql,Node.js,Reactjs,Postgresql,我有一个项目。它有一个PostgreSQL数据库。我创建了api调用。我很确定我编写它的方式使它可以接受SQL注入。我如何重写它才能避免这种情况?请记住,我有很多api调用需要重写 app.post("/comment/add", function (req, res) { let sqlquery = `INSERT INTO dbo.comments( eqid,empid,comment, createddate) VALUES ('${req.body.

我有一个项目。它有一个PostgreSQL数据库。我创建了api调用。我很确定我编写它的方式使它可以接受SQL注入。我如何重写它才能避免这种情况?请记住,我有很多api调用需要重写


app.post("/comment/add", function (req, res) {
  let sqlquery = `INSERT INTO dbo.comments(
  eqid,empid,comment, createddate)
  VALUES ('${req.body.eqid}', '${req.body.empid}', '${req.body.comment}',now()
 
  ) RETURNING commid`;
try{
console.log(req.body)
  pool.query(sqlquery, (err, result) => {console.log(result , err)
    if (result.rowCount) {
      res.json({eqid:result.rows[0].eqid});
    }else {
      console.log(err);
      res.status(400).json({ error: "Error while adding comment" });
    }
  });
}catch(error){

}
  
});

将验证添加到参数(req.body、req.params等),并仅在收到有效参数时才继续运行查询


您可以为这样做的API构建自己的定制中间件,或者使用其他服务,例如,如果使用express,您可以使用参数化技术避免SQL注入。这些技术的外观取决于您使用的数据访问技术。阅读lib上的文档,最有可能的是它的
pool.query(sqlquery,[req.body.eqid,req.body.empid,…),(err,result)
和参数是
,但可能会有所不同。开发时,SQL注入应该在您的脑海中,而不是事后考虑,也不应该在控制台中。登录后端代码,但使用一个不会输出到stdoutYes的记录器。我知道它应该在前面考虑过,但该项目不会投入生产,只是一个例子项目,但一个客户从我这里购买。我现在需要最好的方法来处理手头的问题。我仍然是新的建设应用程序,所以非常感谢任何谦虚的帮助。。。