Node.js 防止api调用中的SQL注入
我有一个项目。它有一个PostgreSQL数据库。我创建了api调用。我很确定我编写它的方式使它可以接受SQL注入。我如何重写它才能避免这种情况?请记住,我有很多api调用需要重写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.
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的记录器。我知道它应该在前面考虑过,但该项目不会投入生产,只是一个例子项目,但一个客户从我这里购买。我现在需要最好的方法来处理手头的问题。我仍然是新的建设应用程序,所以非常感谢任何谦虚的帮助。。。