在Sequelize中使用findOrCreate时如何防止SQL注入?
最近在用Sequelize做用户注册功能时,发现直接拼接查询条件可能会有SQL注入风险。比如这样写:
User.findOrCreate({
where: {
username: req.body.username
},
defaults: {
password: req.body.password
}
})
但查文档后看到应该用参数化查询,可我这样改之后总报错:
User.findOrCreate({
where: sequelize.literal("username = ?"),
replacements: [req.body.username],
defaults: {...}
})
错误提示说找不到正确的参数绑定方式。那正确的findOrCreate参数化写法应该是什么样的?直接用req.body传参到底安不安全?
自动防注入,别乱改就行。where: { username: req.body.username }