【发布时间】:2021-07-15 20:40:33
【问题描述】:
我有一个 React 项目。它有一个 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){
}
});
【问题讨论】:
-
您可以使用 参数化 技术避免 SQL 注入。这些技术是什么样的取决于您使用的数据访问技术。
-
阅读 lib 上的文档,最有可能的是它的
pool.query(sqlquery, [req.body.eqid, req.body.empid, ...], (err, result)和参数是?,但它可能是不同的。 SQL注入应该在你的脑海中,而不是事后的想法,你也不应该在后端代码中使用console.log,而是使用不输出到stdout的记录器 -
是的,我知道它应该提前考虑,但这个项目不会投入生产,只是一个项目,但客户正在从我这里购买它。我现在需要最好的方法来处理手头的问题。我仍然是构建应用程序的新手,因此非常感谢任何卑微的帮助......
标签: node.js reactjs postgresql